2017-09-28 21 views
0

vis 타임 라인에 여러 항목을 추가합니다. 첫 번째 추가 작업은 콜백 내부에서 호출되어 제대로 작동합니다. 비동기 아약스 요청에서 오는 데이터를 두 번째로 추가하고 약속을 반환합니다.
getRocketChat().then(print);
이제 루프를 추가 할 때만 루프가 실행됩니다. 항목을 주석 처리를 제거해도 제대로 작동합니다. 나는 또한 timeline.redraw(), items.update() 등으로 시도했지만 성공하지는 못했다. 왜 이것이 작동하지 않는지는 절대 모릅니다.vis 타임 라인 - items.add 비동기 함수에서 호출 할 때 루프가 반복됩니다.

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 
     } 
    } 
} 

답변

0

이 문제점을 발견했습니다. 루프와는 아무 관련이 없지만 ID는 있습니다. 항목 ID를 다른 함수로 변경했는데 작동합니다 :

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