牢記這樣一句話:嵌套承諾處理
一旦對象已經進入解決或拒絕狀態,它停留在該狀態。回調仍然可以添加到解決或拒絕延期 - 他們將立即執行。
你會想到這個代碼產生什麼:
var d = $.Deferred();
var a = function() {
d.done(function() {
console.log('inner');
});
console.log('outer');
};
d.done(a);
d.resolve();
?
我期待它是inner
,然後outer
。而不是我檢查的任何jQuery版本的情況。
你認爲這是一個錯誤還是我從描述中忽略了一點?
相應的jsfiddle:http://jsfiddle.net/U8AGc/
UPD:一些背景的問題:我預計a
方法同樣的行爲,無論它是如何準確地調用:就像一個a()
或d.done(a)
這只是一個不遵循Promises/A +的怪事:-) – Bergi