我开始挖掘 Promise 并发现了有趣的 Promise.all。
在 MDN 中指出
Promise.all(iterable) 方法返回一个 promise,当 iterable 参数中的所有 promise 都已解析时,该 promise 将解析。
这基本上意味着 set Promise 在参数列表中的所有 Promise 都已解决之后解决。我试图实现它。我只是承诺ajax调用。
var get = function(url) {
return new Promise(function(resolve,reject) {
var xhtml=new XMLHttpRequest();
xhtml.open("GET",url);
xhtml.responseType = 'blob';
xhtml.onload = function() {
if(xhtml.status==200){
resolve(xhtml.response);
} else {
reject(Error("Error"+statusText));
}
}
xhtml.send();
});
}
get("one.jpg").then(function(response){
var blob = window.URL.createObjectURL(response);
var img = document.createElement("img");
console.log("Success"+response);
img.src = blob;
document.body.appendChild(img);
});
哪个工作正常。但是在我尝试添加 Promise.all 之后,它抛出了一个错误。
Promise.all(get).then(function(response){alert("done")});
正如我所说,这引发了错误“ Promise.all 的参数 1 无法转换为序列。” 所以我假设我没有得到 promise.all 的含义。它是如何工作的?