运行Promise.all()中的When-is-then-then子句



我正盯着http://bluebirdjs.com/docs/api/promise.all.html

代码特别是:

var files = [];
for (var i = 0; i < 100; ++i) {
    files.push(fs.writeFileAsync("file-" + i + ".txt", "", "utf-8"));
}
Promise.all(files).then(function() {
    console.log("all the files were created");
});

我特别想问的是,一旦文件被填充,编译器如何知道调用.then块。当文件长度为10或100时,是什么阻止调用.then子句。

Promise.al()中的then-then子句何时运行?

Promise.all()返回一个新的promise,该promise具有基于传递给Promise.all()的promise数组的特定行为。

如果该promise数组中的任何一个promise拒绝,那么Promise.all() promise将拒绝并调用其.then()中的拒绝处理程序(如果有的话)。

如果/当您传递的所有promise都被成功解析时,那么Promise.all() promise将被解析,它将调用.then()中的解析处理程序。

我特别想问的是,一旦文件被填充,编译器如何知道调用.then块。是什么阻止了。那么子句在文件长度为10或长度时被调用100。

Promise.all()通过将.then()处理程序附加到您传递的每一个promise来完成它的工作,然后它监视它们的进度。它维护了一个计数器来跟踪你通过的每一个承诺何时得到解决。

Promise.all创建并返回一个新的promise,该promise封装所提供的promise数组。它将跟踪有多少内心的承诺已经得到解决。一旦所有100个都解决了,包装器承诺就解决了。

最新更新