Buradaki özellikleri takip ediyorum ve onFulfilled'in birden çok bağımsız değişkenle çağrılmasına izin verip vermediğinden emin değilim.
Hayır, yalnızca ilk parametre promise yapıcısında çözünürlük değeri olarak değerlendirilecektir. Bir nesne veya dizi gibi bileşik bir değerle çözümleyebilirsiniz.
Herhangi bir vaat uygulamasının bunu nasıl yaptığı umurumda değil, vaatler için w3c şartnamesini yakından takip etmek istiyorum.
Yanlış olduğuna inandığım yer burası. Spesifikasyon minimum olacak şekilde tasarlanmıştır ve vaat edilen kitaplıklar arasında birlikte çalışacak şekilde oluşturulmuştur. Buradaki fikir, örneğin DOM geleceklerinin güvenilir bir şekilde kullanabileceği ve kitaplıkların tüketebileceği bir alt kümeye sahip olmaktır. Söz uygulamaları .spread
bir süredir istediğinizi yapın . Örneğin:
Promise.try(function(){
return ["Hello","World","!"];
}).spread(function(a,b,c){
console.log(a,b+c); // "Hello World!";
});
İle Bluebird . Bu işlevselliği istiyorsanız bir çözüm, onu çoklu doldurmaktır.
if (!Promise.prototype.spread) {
Promise.prototype.spread = function (fn) {
return this.then(function (args) {
return Promise.all(args); // wait for all
}).then(function(args){
//this is always undefined in A+ complaint, but just in case
return fn.apply(this, args);
});
};
}
Bu şunları yapmanızı sağlar:
Promise.resolve(null).then(function(){
return ["Hello","World","!"];
}).spread(function(a,b,c){
console.log(a,b+c);
});
Yerli vaatlerle keman . Veya tarayıcılarda artık (2018) yaygın olan spread'i kullanın:
Promise.resolve(["Hello","World","!"]).then(([a,b,c]) => {
console.log(a,b+c);
});
Veya beklerken:
let [a, b, c] = await Promise.resolve(['hello', 'world', '!']);