- + JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net
762 :デフォルトの名無しさん[sage]:2016/05/13(金) 00:43:14.48 ID:lm16bc2e - 仕様を理解してないだけ
resolveやrejectを呼び出すまで始まらないのは 最初のPromiseコンストラクタにコールバック関数渡した時のみ 後のthen節やcatch節ではPromiseを返さないかぎり即座に解決され進む
|
- + JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net
763 :デフォルトの名無しさん[sage]:2016/05/13(金) 00:45:15.67 ID:lm16bc2e - あとそもそもおかしい部分があるな
|
- + JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net
765 :デフォルトの名無しさん[sage]:2016/05/13(金) 01:00:51.12 ID:lm16bc2e - まあ色々パターンは有る。
チェーン内で1つ1つプロミスを作って、外部関数はコールバックベースというのが1つ。 でもそれよりも良いのが、外部関数がプロミスを返すようにすること。 そうすると特にメイン部分のコードはこんなにシンプルになる。 function mainScript( callback ){ return sampleA().catch( sampleB ).then( sampleC ) } mainScript( ).then( function ( result ) { console.log( result ); }, function ( err ) { console.log( err ); });
|
- + JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net
767 :デフォルトの名無しさん[sage]:2016/05/13(金) 01:01:24.85 ID:lm16bc2e - function sampleA() {
return new Promise( function (_, reject) { setTimeout( function () { console.log('I\'m sampleA'); reject(); }, 2000 / 1 ); }); } function sampleB() { return new Promise( function (resolve) { setTimeout( function () { console.log('I\'m sampleB'); resolve(); }, 2000 / 1 ); }); } function sampleC() { return new Promise( function (resolve) { setTimeout( function () { console.log('I\'m sampleC'); resolve(); }, 2000 / 1 ); }); }
|
- + JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net
768 :デフォルトの名無しさん[sage]:2016/05/13(金) 01:04:41.92 ID:lm16bc2e - >>766
今言葉で何をどう言ったらいいのか分からないが コードを見て感じてくれ
|
- + JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net
772 :デフォルトの名無しさん[sage]:2016/05/13(金) 01:36:12.01 ID:lm16bc2e - .then(A).catch(B)
を .then(A,B) と書けるってだけだよ 細かな違いとして前者はAによる棄却をBで受け取れるが、後者は受け取れない あとは全く同じ
|