我怎樣才能調用一個函數,然後當它完成時,調用另一個函數傳遞第一個函數的返回值作爲參數?我讀了很多關於Deferred
,但無法弄清楚它是如何工作的。jQuery函數同步調用
https://api.jquery.com/category/deferred-object/
https://api.jquery.com/jQuery.Deferred/等主要SO ..
下面是一些例子:
function a() {
new amodel.AModel().save(vm.elem).done(function(_elem) {
vm.elem(_elem);
}).fail(function(error) {
...
});
function b(param) {
...
} //should call this with the a() return value
我試圖使它作爲後續工作:
$.when(a()).then(b());
這樣我就無法傳遞參數,我甚至不確定如果它符合我的要求。
UPDATE:
對不起,我寫的是錯誤的。我不必將返回值作爲參數傳遞,因爲當函數a
運行並完成時,它將設置將用於函數b
中ajax調用參數的值(vm.elem(_elem)
)。
您的例子並不做任何事情異步。你是否過分簡化了它,或者你的實際問題中的代碼做了異步? – Quentin
它不是一個異步調用,但函數'a'完成後應調用函數'b'(都是ajax調用) –
「它不是異步調用」和「都是ajax調用」 - 您只是自相矛盾。這是真的嗎? – Quentin