1
我想跟隨一些JavaScript課程,其中有一個延遲實現。 這是代碼延遲對象內部的回調函數
getData = function (options) {
return $.Deferred(function (def) {
var results = options.results;
getFunction({
success: function (smt) {
results("test");
def.resolve(results);
debugger;
},
error: function (response) {
def.reject();
}
});
}).promise();
},
的核心現在的問題是..當我調用這個函數來自外部,如:
$.when(somthing.getData(options)).
done(alert(options.results));
debugger;
它發生,首先到達$。當外呼調試器,然後觸摸裏面的延遲對象內部回調SUCCESS函數...
我不明白它..不應該只有在達到def.resolve(結果)時承諾?...
感謝畸形..這就像一個魅力的工作。我能問你爲什麼..我認爲,內部完成的功能已經是一個回調函數...爲什麼我必須定義一個函數來調用我的函數? – 2013-03-05 10:08:04
'.done'接受函數。你傳遞給'.done'的函數不是函數,而是調用alert()的結果(注意命令:first alert被調用,然後它的結果被傳遞給'.done'),這是未定義的(這就是警報返回)。這就像做'.done(「test」)'。這是什麼意思? JavaScript應該如何處理字符串?你想將一個函數傳遞給'.done',所以JavaScript會知道:「哦,我收到了一個函數,我可以在'完成時'調用它。 – freakish 2013-03-05 10:15:01
晶瑩剔透:) – 2013-03-05 11:02:11