vis timeline - items.add 从异步函数调用时中断循环
vis timeline - items.add breaks loop when called from async function
我正在向可视化时间轴添加多个项目:
第一次添加在回调中调用并且工作正常。
我第二次添加来自异步 ajax 请求和 returns 承诺的数据。
getRocketChat().then(print);
现在的问题是,当我添加项目时,循环只执行一次。当我取消注释添加的项目时,它工作正常。
我也尝试过 timeline.redraw()
、items.update()
等,但没有成功。我完全不知道为什么这不起作用。
function print(channelAndMessages) {
for (let i = 0; i < channelAndMessages.length; i++) {
console.log(channelAndMessages[i]);
for (let j = 0; j < channelAndMessages[i].messages.length; j++) {
console.log("ChannelName " + getChannelName(channelAndMessages[i].messages[j].rid));
let singleMsg = channelAndMessages[i].messages[j];
items.add({
id: "Chat" + singleMsg.id,
group: 'einsatzltr',
content: singleMsg.msg,
start: moment(singleMsg.ts)
});
console.log(singleMsg.msg); //excecuted only once
}
}
}
我发现了问题。它与循环无关,而与 id 无关。
我将项目 ID 更改为另一个函数,现在它可以工作了:
id: "Chat" + i +" " + j,
我正在向可视化时间轴添加多个项目:
第一次添加在回调中调用并且工作正常。
我第二次添加来自异步 ajax 请求和 returns 承诺的数据。
getRocketChat().then(print);
现在的问题是,当我添加项目时,循环只执行一次。当我取消注释添加的项目时,它工作正常。
我也尝试过 timeline.redraw()
、items.update()
等,但没有成功。我完全不知道为什么这不起作用。
function print(channelAndMessages) {
for (let i = 0; i < channelAndMessages.length; i++) {
console.log(channelAndMessages[i]);
for (let j = 0; j < channelAndMessages[i].messages.length; j++) {
console.log("ChannelName " + getChannelName(channelAndMessages[i].messages[j].rid));
let singleMsg = channelAndMessages[i].messages[j];
items.add({
id: "Chat" + singleMsg.id,
group: 'einsatzltr',
content: singleMsg.msg,
start: moment(singleMsg.ts)
});
console.log(singleMsg.msg); //excecuted only once
}
}
}
我发现了问题。它与循环无关,而与 id 无关。 我将项目 ID 更改为另一个函数,现在它可以工作了:
id: "Chat" + i +" " + j,