Я использую платформу Twilio ... и я тестирую свой код ... но я не понимаю, что происходит, когда я пытаюсь получить канал из channelDescriptor ... У меня есть этот код:
function processChannelPage(page)
{
var items = page.items;
that.channels = that.channels || [];
for (let c = 0, p = Promise.resolve(); c < items.length; c++)
{
p = p.then(function() {
let channelDescriptor = items[c];
console.log("SID ", channelDescriptor.sid);
getPreviousMessages(channelDescriptor, that)
.then(function() {
console.log("resuelto msg", channelDescriptor.sid);
return Promise.resolve();
});
});
}
..............
}
that.client.getUserChannelDescriptors().then(function (paginator) {
processChannelPage(paginator);
});
function getPreviousMessages(channelDescriptor, chat) {
return new Promise(resolve => {
console.log("p2.....step0.....", channelDescriptor.sid);
console.log("p2.....step1.....", channelDescriptor.sid);
let promise = chat.getChannel(channelDescriptor.sid);
console.log(promise);
return promise.then(channel => {
console.log("p2.....step2.....", channelDescriptor.sid);
return channel;
});
});
}
TwilioChat.prototype.getChannel = function (channel_sid) {
console.log("I am in getChannel.....");
for (var channel in this.channels) {
if (this.channels[channel].sid == channel_sid) {
return this.channels[channel].getChannel();
}
}
return null;
};
Я понимаю, что TwilioChat.prototype.getChannel возвращает Promise, тогда я знаю, что мне нужно оценить это обещание, используя THEN, как этот
chat.getChannel(channelDescriptor.sid).then
Но я вижу такие результаты:
SID CH09c567eeebab4dabb5fa8594a44d774e
twilio_helper.js:147 p2.....step0..... CH09c567eeebab4dabb5fa8594a44d774e
twilio_helper.js:148 p2.....step1..... CH09c567eeebab4dabb5fa8594a44d774e
twilio_helper.js:388 I am in getChannel.....
twilio_helper.js:392 Promise {<pending>}
twilio_helper.js:72 SID CH369ca3cc46d74886b031a52fd2e7dc29
twilio_helper.js:147 p2.....step0..... CH369ca3cc46d74886b031a52fd2e7dc29
twilio_helper.js:148 p2.....step1..... CH369ca3cc46d74886b031a52fd2e7dc29
twilio_helper.js:388 I am in getChannel.....
twilio_helper.js:392 Promise {<pending>}
twilio_helper.js:150 p2.....step2..... CH09c567eeebab4dabb5fa8594a44d774e
twilio_helper.js:150 p2.....step2..... CH369ca3cc46d74886b031a52fd2e7dc29
Мой вопрос ... почему этот журнал twilio_helper.js: 150 p2 ..... step2 Я вижу за пределами своей Цепи обещаний.Мне нужно увидеть этот результат:
SID CH09c567eeebab4dabb5fa8594a44d774e
twilio_helper.js:147 p2.....step0..... CH09c567eeebab4dabb5fa8594a44d774e
twilio_helper.js:148 p2.....step1..... CH09c567eeebab4dabb5fa8594a44d774e
twilio_helper.js:388 I am in getChannel.....
twilio_helper.js:392 Promise {<pending>}
twilio_helper.js:150 p2.....step2..... CH09c567eeebab4dabb5fa8594a44d774e
twilio_helper.js:72 SID CH369ca3cc46d74886b031a52fd2e7dc29
twilio_helper.js:147 p2.....step0..... CH369ca3cc46d74886b031a52fd2e7dc29
twilio_helper.js:148 p2.....step1..... CH369ca3cc46d74886b031a52fd2e7dc29
twilio_helper.js:388 I am in getChannel.....
twilio_helper.js:392 Promise {<pending>}
twilio_helper.js:150 p2.....step2..... CH369ca3cc46d74886b031a52fd2e7dc29
Первый channelDescriptor .... все выполненные обещания .... next ChannelDescriptor ... все выполненные обещания ... Другими словами, цикл передвигается по порядку каждым channelDescriptor... Пожалуйста, мне нужны только Обещания ... не Async / Await ... потому что мне нужно это также работает в IExplorer.Можете ли вы помочь мне с этими обещаниями?Большое спасибо!
Хорошо !!!!Хорошо, я изменяю свой код, как эти модификации ....
TwilioChat.prototype.getChannel = function(channel_sid){
console.log("I am in getChannel.....");
for (var channel in this.channels) {
if (this.channels[channel].sid == channel_sid) {
return this.channels[channel].getChannel();
}
}
reject("error");
};
function getPreviousMessages(channelDescriptor, chat) {
return new Promise(resolve => {
console.log("p2.....step0.....", channelDescriptor.sid);
console.log("p2.....step1.....", channelDescriptor.sid);
let promise = chat.getChannel(channelDescriptor.sid);
console.log(promise);
return promise.then(channel => {
console.log("p2.....step2.....", channelDescriptor.sid);
resolve(channel); // I Resolve my New Promise
});
});
}
Но мой тест всегда приводит к следующему:
Я вижу .... этот код журнала ....
SID CH09c567eeebab4dabb5fa8594a44d774e
twilio_helper.js:147 p2.....step0..... CH09c567eeebab4dabb5fa8594a44d774e
twilio_helper.js:148 p2.....step1..... CH09c567eeebab4dabb5fa8594a44d774e
twilio_helper.js:388 I am in getChannel.....
twilio_helper.js:392 Promise {<pending>}
twilio_helper.js:72 SID CH369ca3cc46d74886b031a52fd2e7dc29
twilio_helper.js:147 p2.....step0..... CH369ca3cc46d74886b031a52fd2e7dc29
twilio_helper.js:148 p2.....step1..... CH369ca3cc46d74886b031a52fd2e7dc29
twilio_helper.js:388 I am in getChannel.....
twilio_helper.js:392 Promise {<pending>}
twilio_helper.js:150 p2.....step2..... CH09c567eeebab4dabb5fa8594a44d774e
twilio_helper.js:150 p2.....step2..... CH369ca3cc46d74886b031a52fd2e7dc29
p2 ..... Step2 ..... находится вне моего цикла .... На самом деле я не понимаю.