我想學習如何使用承諾,但我有麻煩理解的鏈接。我假設用這個代碼,兩個承諾都會運行。然後,當我調用test.then()時,它應該知道測試已解決並將解析數據傳遞給then()。JS ES6無極鏈
一旦函數結束,它進至下一然後(),重複與TEST2承諾相同的處理。
但是,我只能把它打印出來的第一個應許的結果,而不是第二。任何想法在這裏缺少什麼?
var test = new Promise(function(resolve, reject){
resolve('done1');
});
var test2 = new Promise(function(resolve, reject){
resolve('done2');
});
test
.then(function(data) {
console.log(data);
})
.then(test2)
.then(function(data) {
console.log(data);
});
您不能將承諾傳遞給'then',而是一個回調函數。 – Bergi
通常,您將創建基於某些特定需求或輸入返回promise的函數,而不僅僅是將「新」Promise分配給變量。這種創建承諾的方式幾乎是不必要的,除非您將某些其他異步功能調整爲承諾。因此,更合理的虛擬案例可能是:var test2 = x => new Promise(function(res,rej){resolve(x);});因爲至少在那裏你正在建模一個可以處理數據的函數。然後像(test2)這樣的東西實際上可以工作/變得有意義。 – Dtipson