我确信有一种简单的方法可以做到这一点,但我很难理解异步调用及其流程。我正在尝试在 javascript 中执行一个简单的赋值语句,然后设置一个计时器,以便在分配该对象后对该对象执行操作。我有一些类似的东西:
var info = getInfo();
$timeout(updateInfo(info), 5000);
但是,我不希望在最初设置信息之前执行超时。我尝试过使用 .then
或某种形式的回调,但我尚未成功确定如何做到这一点。我不确定在 updateInfo
调用中使用 info
参数是否会导致我无法在 getInfo
中使用回调或什么正确的流程是。我读过其他文章和堆栈溢出响应,但找不到处理异步分配然后在后续调用中将其用作参数的文章。
getInfo
和 updateInfo
是返回 Highcharts 图形配置对象的方法。无需复制所有具体细节:
getInfo: function() {
return {
options: {
chart: {
type: 'line'
}
}
...
}
}
updateInfo: function(info) {
// Here computations are performed on plot series data.
info.series.push(...)
}
最佳答案
getInfo
和 updateInfo
对我来说看起来非常同步。
所以不应该有任何同步问题。
我注意到的唯一一件事是在您的示例中错误地使用了 $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/