Javascript异步赋值和回调

标签 javascript asynchronous callback variable-assignment

我确信有一种简单的方法可以做到这一点,但我很难理解异步调用及其流程。我正在尝试在 javascript 中执行一个简单的赋值语句,然后设置一个计时器,以便在分配该对象后对该对象执行操作。我有一些类似的东西:

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

但是,我不希望在最初设置信息之前执行超时。我尝试过使用 .then 或某种形式的回调,但我尚未成功确定如何做到这一点。我不确定在 updateInfo 调用中使用 info 参数是否会导致我无法在 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异步赋值和回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33170575/

相关文章:

php - 如何异步运行 PHP 脚本?

javascript - AngularJS tokenWrapper-错误的回调参数

sockets - Lisp : Is there a callback that informs that a connection from open-socket has just dropped?

javascript - jQuery 为选项卡使用特定的 UL 元素

javascript - 负数和正数的正则表达式

.net - 我在哪里可以找到 ThreadPool.SwitchTo 方法?

scala - 使用Play.async会产生什么效果,因为Play使用非阻塞的Netty

javascript - CKEditor 5 工具栏固定位置

javascript - 如何使文本留在 div 框内并在到达 div 框的边缘时继续下一行?

c++ - 带回调的 ObjC/C/C++ 高分辨率计时器