Wad*_*e73 5 javascript es6-promise
我正在阅读一篇关于 javascript 承诺的文档(https://developers.google.com/web/fundamentals/getting-started/primers/promises),其中一个示例使用了一系列承诺。
// Start off with a promise that always resolves
var sequence = Promise.resolve();
// Loop through our chapter urls
story.chapterUrls.forEach(function(chapterUrl) {
// Add these actions to the end of the sequence
sequence = sequence.then(function() {
return getJSON(chapterUrl);
}).then(function(chapter) {
addHtmlToPage(chapter.html);
});
})
Run Code Online (Sandbox Code Playgroud)
我很好奇它是如何工作的,因为我假设当第一个 .then 添加到承诺序列中时它将开始执行代码。当我调试代码时,直到脚本标记中的最后一行代码被执行后,承诺序列才被执行。所以我的问题是承诺何时真正得到执行?谢谢。
请参阅这篇文章,了解 Promise 执行上下文的详细解释:
所有 .then() 处理程序都会在当前执行线程完成后异步调用(如 Promises/A+ 规范所述,当 JS 引擎返回到“平台代码”时)。即使对于同步解析的 Promise 也是如此,例如 Promise.resolve().then(...)。这样做是为了保证编程的一致性,以便无论 Promise 是立即解决还是稍后解决,都会一致地异步调用 .then() 处理程序。这可以防止一些计时错误,并使调用代码更容易看到一致的异步执行。
| 归档时间: |
|
| 查看次数: |
2328 次 |
| 最近记录: |