jQuery 函数同步调用
jQuery function sync call
我如何调用一个函数,然后在它完成后调用另一个函数,将第一个函数的 return 值作为参数传递?我阅读了很多关于 Deferred
的内容,但不知道它是如何工作的。
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());
这样我就不能传递参数了,我什至不确定它是否符合我的要求。
更新:
对不起,我写错了。我不必将 return 值作为参数传递,因为当函数 a
运行并完成时,它会设置将用于 [=37] 的值 (vm.elem(_elem)
) =] 在函数 b
.
中调用参数
如果 a
返回了一个承诺,那么它会在使用 then
链接在一起时自动将结果传递给 b
所以你想要的是a().then(b)
.
注意 b
没有带括号传递,那会将调用 b
的结果传递给链。你实际上在做的是将 reference 传递给 b
到链中并说 "Call b
when you have resolved the result of a
".
这是一个演示的实例:http://jsfiddle.net/9wvb1d2a/
我如何调用一个函数,然后在它完成后调用另一个函数,将第一个函数的 return 值作为参数传递?我阅读了很多关于 Deferred
的内容,但不知道它是如何工作的。
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());
这样我就不能传递参数了,我什至不确定它是否符合我的要求。
更新:
对不起,我写错了。我不必将 return 值作为参数传递,因为当函数 a
运行并完成时,它会设置将用于 [=37] 的值 (vm.elem(_elem)
) =] 在函数 b
.
如果 a
返回了一个承诺,那么它会在使用 then
b
所以你想要的是a().then(b)
.
注意 b
没有带括号传递,那会将调用 b
的结果传递给链。你实际上在做的是将 reference 传递给 b
到链中并说 "Call b
when you have resolved the result of a
".
这是一个演示的实例:http://jsfiddle.net/9wvb1d2a/