TITBITS:約束
5893 ワード
//例1 :
両方とも同じ出力を記録します
観察する少数のもの 約束がすぐに解決されるならば、それは重要でありません(例1)または100 ms(例2)をとってください、出力は同じままです.約束は常に非同期に動作します. 電話している 出力はなぜD B Bではありませんか?
ステップ2の中の上記の例では、JSエンジンは最初のコンソールを印刷し始め、ジョブキューとプリントbにp .を追加し、最後にジョブキューがasyncループの後に取り上げられ、ステップ3を実行します.
const p = Promise.resolve('A');
p.then(function (val) {
console.log(val);
p.then(function () {
console.log('D');
});
console.log('B');
});
p.then(function () {
console.log('C');
});
//例2 :const p = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('A');
}, 100);
});
p.then(function (val) {
console.log(val);
p.then(function () {
console.log('D');
});
console.log('B');
});
p.then(function () {
console.log('C');
});
例1と2の出力は?
両方とも同じ出力を記録します
観察する少数のもの
p.then
複数回、すなわち、約束は一度解決されるか拒否される不変の値を持っていると解決されます.// Step 1
p.then(function (val) {
// Step 2
console.log(val)
p.then(function () {
// Step 3
console.log('D')
})
console.log('B')
})
約束はイベント・ループの仕事待ち行列に加えられます.そして、それはループして、予定されたどんなコールバック・イベント待ち行列も実行するダニを持ちます.そのようなティックまたは1つのasyncループの終わりのために、それはジョブ待ち行列をチェックして、どんな呼び出しバックも実行します.ステップ2の中の上記の例では、JSエンジンは最初のコンソールを印刷し始め、ジョブキューとプリントbにp .を追加し、最後にジョブキューがasyncループの後に取り上げられ、ステップ3を実行します.
Reference
この問題について(TITBITS:約束), 我々は、より多くの情報をここで見つけました https://dev.to/yo08315171/titbits-promises-oafテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol