2016-04-29 13 views
6

節2.2.4は言う: Promise/A +仕様の2.2.4項の背後にある意図は何ですか?約束/ A +の仕様の

がonFulfilledまたは実行 コンテキストスタックが唯一のプラットフォームのコードを含むまでonRejectedが呼び出されてはいけません。 「プラットフォームのコードは」エンジン、環境、および 実装コードを約束することを意味

ここ:

は、次にノートにそれがあると述べています。実際には、この要件は、 onFulfilledとonRejectedが、 というイベントが呼び出された後、新しいスタックで非同期に実行されるようにします。

チェーンに大量のonFulfilled関数がある場合、それらの実行によってスレッドがブロックされないようにすることを意図していますか?

または、私が読んでいない行の間に他に何かがありますか?

+0

[こちら](https://stackoverflow.com/a/28750658/1048572)、[ここ](https://stackoverflow.com/a/29454966/1048572)、[ ](https://stackoverflow.com/q/23447876/1048572)[スレッド](https://stackoverflow.com/q/29963129/1048572) – Bergi

答えて

8

推論がコールバックではなくおそらく非同期の常に非同期であるときということです、それを使用するより一貫性と信頼性の高いAPIを提供します。そのスニペットは明らかにonFulfilledがすぐに呼び出されません、それはそうではなかった場合、我々はすぐに転がっ未使用のピザを持っているでしょうし、私たちは空腹のままにしたいと仮定し今すぐ次のコード

var pizza; 
browseStackOverflow().then(function(){ 
    eatPizza(pizza); 
}); 
pizza = yesterdaysLeftovers; 

を考えてみましょう。この場合、バグは修正するのは簡単ですが、実行の順番は簡単で、このようにいくつかの前提を立てることができれば、APIを使いやすくなります。

これについては、issue on the Promises/A+ GitHubレポがディスカッションされています。