我怎样才能调用一个函数,然后当它完成时,调用另一个函数传递第一个函数的返回值作为参数?我读了很多关于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