我敢肯定有一个简单的方法可以做到这一点,但是我很难把注意力集中在异步调用及其流程上。我正在尝试用javascript做一个简单的赋值语句,然后设置一个计时器,以便在该对象被赋值后对该对象执行操作。我有一些类似的东西:

var info = getInfo();
$timeout(updateInfo(info), 5000);


但是,我不希望在最初设置信息之前执行超时。我已经尝试使用.then或某种形式的回调,但是我还没有成功确定如何做到这一点。我不确定在info调用中是否具有updateInfo参数是否可以使我无法在getInfo中使用回调或正确的流程是什么。我读过其他文章和堆栈溢出响应,但是找不到处理异步分配的内容,然后在后续调用中将其用作参数。

getInfoupdateInfo是返回Highcharts图形配置对象的方法。无需复制所有特定详细信息:

getInfo: function() {
  return {
    options: {
      chart: {
        type: 'line'
      }
    }
    ...
  }
}

updateInfo: function(info) {
  // Here computations are performed on plot series data.
  info.series.push(...)
}

最佳答案

getInfoupdateInfo看起来都非常同步。
因此,不应有任何同步问题。

我唯一注意到的是您的示例中对$timeout的错误使用。
$timeout(updateInfo(info), 5000);这样,将在超时开始之前调用updateInfo,并将返回的值作为参数传递。

为了在5秒钟后调用updateInfo,您必须使用匿名函数或bind函数。

$timeout(function() { updateInfo(info); }, 5000);

$timeout(updateInfo.bind(null, info), 5000);

有关bind的更多信息。

关于javascript - Javascript异步分配和回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33170575/

10-09 17:41