【问题标题】:How to wait for one function to finish before continuing?如何在继续之前等待一个功能完成?
【发布时间】:2016-09-30 01:36:14
【问题描述】:

我有三个功能。调用层次是这样的:

function a() {
    b();
    c();
}

function b() {
    d();
}

我想要的是完成 b 然后继续做 c。但是 d 是异步的。我无权更改 b 和 d 中的任何内容。有什么办法可以处理这种情况吗?对不起我的英语。

【问题讨论】:

  • 我认为我们需要更多关于这个问题的细节。 d() 是否接受回调函数? d() 是否返回一个可以链接到的承诺?
  • 您可以查看callbacks 或首选选项promise
  • 如果d 是异步的,我可以看出几乎异步函数都带有回调函数。如果你能说出d 的作用,那就更容易提供帮助了。
  • 这可能会有所帮助:stackoverflow.com/questions/5000415/…
  • 异步调用到底是如何完成的?是使用 SetInterval 吗?

标签: javascript


【解决方案1】:

几乎肯定不会。你需要一个回调、一个承诺或一个事件。

由于您无法更改b(),因此您无法向d() 添加回调参数(假设它首先接受了一个)并且您无法捕获d() 的返回值(假设它首先返回了一个承诺)。

我们无法判断d() 是否在 DOM 完成时触发事件(或者即使您在有 DOM 的上下文中运行 JS)。

【讨论】:

  • 可以在调用b的时候添加回调吗?
  • @Tom — 不。它不会将任何参数传递给d()
猜你喜欢
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 2015-09-16
  • 2020-02-24
  • 1970-01-01
  • 2019-03-12
  • 2010-09-05
相关资源
最近更新 更多