2016-05-17 4 views
0

ここでは、コンソールで4と5が見えます。一度最初のaddが解決されると、thenは、別のaddを返す無名関数を経由すると考えました。シンプルなES6の約束の問題 - スワップされた解決と拒否のパラメータ

私は最初にaddだけが実行される原因が分かりません。

フィドル:http://www.es6fiddle.net/iobmmhs3/

var add = function(a, b) { 
    return new Promise(function(reject, resolve) { 
     console.log(a+b); 
     resolve(a+b); 
    }); 
}; 

add(1,3) 
.then(function() { 
    return add(2,3) 
}) 

答えて

4

あなたresolverejectは後方です:

var add = function(a, b) { 
    return new Promise(function(resolve, reject) { 
     //      ^^^^^^^ ^^^^^^ 
     console.log(a+b); 
     resolve(a+b); 
    }); 
}; 

add(1,5) 
.then(function() { 
    return add(2,2) 
}); 

はフィドル:ドキュメントについてhttp://www.es6fiddle.net/iobm7rb7/

MDNを参照してください。将来の参考として、コンストラクタに渡された関数のシグネチャを知らなくてもこれをデバッグするには、コンソールでUncaught in Promiseというエラーが表示されているはずです。これは、約束が拒否され、拒否ハンドラ。

+0

私は顔の中で私を見つめていました。ありがとうございました! – Elliot

+0

@Elliotあなたの例では、パラメータなしでresolve関数を呼び出すことができます。 'resolve(a + b)'の代わりに 'resolve()'のようになります –

+0

自己削除されたoops – BaldEagle

関連する問題