var defer = $.Deferred();
defer.done(function(a, b) { return a * b; }) // 1. 返回 6
.done(function(result) { console.log(result); }) // 輸出 2?為何非 6?
.then(function(a, b) { return a * b; }) // 2. 返回 6
.done(function(result) { console.log(result); }) // 輸出 6
.then(function(a, b) { return a * b; }) // 3. 返回 6
.done(function(result) { console.log(result); }); // 輸出 6
defer.resolve(2, 3);
疑問:第一個 `done` 返回 6,第二個 `done` 卻收到 2(第一個參數),3 去哪了?
| 方法 | 回調參數來源 | 返回值作用 |
|---|---|---|
| done/fail/always | **原始 resolve/reject 參數**(不變) | **被忽略**,不傳遞給下一個回調 |
| then | 上一個 `then`/`pipe` 的**返回值** | **作為下一個 then 的參數**傳遞 |
| pipe (已棄用,同 then) | 同上 | 同上 |
const result = await new Promise((resolve) => resolve(2, 3)); // 實際只取第一個參數
// 推薦:resolve 單個對象/數組
const [a, b] = await Promise.resolve([2, 3]);
const r1 = a * b; // 6
const r2 = r1 * b; // 18 ...