Я застрял в этом вопросе в течение некоторого времени.Я звоню через API - получаю результаты просто отлично.Я сохраняю значения в массив.Проблема, с которой я сталкиваюсь, заключается в попытке получить конкретные значения из массива.У меня есть цикл for in, который требует времени, поэтому, когда выполняется оператор if, цикл не достиг этого значения.Если я использую Postman, я вижу, что значение существует, просто цикл не выполняется во времени.Вот мой код:
var msg = {};
var embed = {};
var link = {};
var msgIn = [];
var rel = [];
return SkypeService.getEvent(msg).then(function (result) {
msg.eventsNext = result._links.next.href;
if (result && result.sender && result.sender.length > 0) {
if (result.sender) {
for (var item in result.sender) {
var event = result.sender[item].events;
for (var key in event) {
embed = event[key]._embedded;
msgIn.push(embed);
}
for (var key in event) {
link = event[key].link;
rel.push(link);
}
// console.log(Object.entries(msgIn))
if(rel['rel'] == 'message') {
console.log("message is there")
if(msgIn.message) {
console.log("links exist")
if(msgIn.message.direction == "Incoming") {
console.log("direction is there")
msg.participant = msgIn.message._links.participant.href;
msg.contMsg = msgIn.message._links.messaging.href;
msg.msgIn = msgIn.message._links.plainMessage.href;
break;
}
}
}
if(rel['rel'] == "messagingInvitation"){
console.log("invite there")
if(msgIn.messagingInvitation && msgIn.messagingInvitation.state !== "Failed") {
console.log("invite link")
if(msgIn.messagingInvitation.direction == "incoming") {
console.log("direction invite")
msg.msgInviteState = msgIn.messagingInvitation._links.state;
msg.acceptInvite = msgIn.messagingInvitation._links['accept'].href;
msg.msgIn = msgIn.messagingInvitation._links.message.href;
break;
}
}
}
if(rel['rel'] == 'messaging') {
console.log('messaging there')
if(msgIn.messaging) {
if(msgIn.messaging.state == "Disconnected") {
console.log("msgn Disconnected")
msg.addMsg = msgIn.messaging._links.addMessaging.href;
break;
}
}
}
}
}
}
console.log(msg)
})
Также я прикрепил скриншот моего локального хоста с печатью msgIn, который показывает, что ключи существуют.
Когда я тестирую код запуска паруса, я вижу, что msgIn печатает пару раз, каждый из которых увеличивается в длине.Это то, что заставляет меня думать, что цикл for еще не завершен к тому времени, когда выполняется оператор if.
Пожалуйста, помогите - мне действительно нужно, чтобы это было решено.Мне нужно захватить ссылки, чтобы я мог использовать их на следующем шаге.
Спасибо.