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/