vis timeline - 从异步函数调用时,items.add中断循环

时间:2017-09-28 13:23:43

标签: javascript jquery es6-promise timeline

我在vis时间轴中添加了多个项目: 第一次添加在回调内调用,工作正常。 我第二次添加来自异步ajax请求的数据并返回一个promise  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
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我发现了问题。它与循环无关,只与id有关。 我将项目ID更改为另一个函数,现在它可以工作:

 id: "Chat" + i +" " + j,