私は Promise を掘り下げ始め、興味深い Promise.all を見つけました。
MDN には次のように記載されています。
Promise.all(iterable) メソッドは、 iterable 引数のすべての 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の意味を理解していないと思います。それはどのように機能しますか?