【问题标题】:What is happening when I use parenthesis in this function call to make it behave differently? [duplicate]当我在此函数调用中使用括号使其行为不同时会发生什么? [复制]
【发布时间】:2014-08-15 17:34:05
【问题描述】:

我希望等待来自一系列调用的承诺对象数组。 但是当我使用以下调用时,没有任何反应:

$.when.apply(null, promises).done(processFinalTable());

以下代码的执行按预期工作:

$.when.apply(null, promises).done(processFinalTable);           

在执行级别这里发生了什么?

这是一个工作jsFiddle example的链接

【问题讨论】:

  • 你问一个函数和它的执行有什么区别?
  • 我不确定这是你错过的,但也许你会对 this article 感兴趣。
  • 我错过了一个编译器,当我做一些愚蠢的事情时会警告我......

标签: jquery asynchronous promise


【解决方案1】:

在第一个中,您正在调用函数 processFinalTable,并将其结果传递给 done()。

在第二个中,您正在传递函数本身,这就是 done() 需要正确执行的内容。

【讨论】:

  • 天哪。这意味着您可以从函数调用中返回一个函数,这意味着有人会尝试这样做并期望其他人理解它。谢谢
  • 是的。它可以让你做很强大的事情,但也可以做很混乱的事情。函数是 JS 中的一等对象。
【解决方案2】:

在第一个中,processFinalTable 函数执行,done 方法获取它的返回值,当进程完成时,它将尝试执行这个返回值。

在第二个中,done 方法本身获取函数,以便在处理完成时可以使用它。

【讨论】:

  • 你到底做了什么
  • omg,我们同时回答。啊哈哈哈哈
猜你喜欢
  • 2021-12-04
  • 2011-06-19
  • 2021-08-31
  • 2011-01-18
  • 2016-02-13
  • 2022-06-15
  • 2011-02-01
  • 1970-01-01
相关资源
最近更新 更多