我敢肯定有一个简单的方法可以做到这一点,但是我很难把注意力集中在异步调用及其流程上。我正在尝试用javascript做一个简单的赋值语句,然后设置一个计时器,以便在该对象被赋值后对该对象执行操作。我有一些类似的东西:
var info = getInfo();
$timeout(updateInfo(info), 5000);
但是,我不希望在最初设置信息之前执行超时。我已经尝试使用
.then
或某种形式的回调,但是我还没有成功确定如何做到这一点。我不确定在info
调用中是否具有updateInfo
参数是否可以使我无法在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 - Javascript异步分配和回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33170575/