1 回答
TA贡献2039条经验 获得超7个赞
现在您为 3 个操作返回 1 个承诺,但看起来您打算让所有 3 个操作异步。为此,您需要为每个异步操作返回一个承诺。
您可能正在寻找这样的东西:
const messages = [
`Hello name`,
`I'm hosting a party on Sunday at my house, for my birthday`,
`I'll be really happy if you'd come`,
];
const chatWindow = document.querySelector(".message-day");
const startChat = () => messages.map(
// Returns array of promises wrapping
// each message into a promise
(message, index) => new Promise(resolve => {
setTimeout(() => {
chatWindow.innerHTML += `
<div class="message">
<div class="message-wrapper">
<div class="message-content">
<h6 class="text-dark">Karan</h6>
<span>${message}</span>
</div>
</div>
<div class="message-options">
<div class="avatar avatar-sm"><img alt="" src="./assets/media/avatar/6.png"></div>
<span class="message-date">9:12am</span>
</div>
</div>`;
resolve(message);
}, 2000 * index);
})
);
Promise.all(startChat())
.then(args => {
// args will contain same strings as messages
console.log("2nd Functions", args);
});
如果您想在打印每条消息之前/之后调用回调,我建议将回调作为参数传递给startChat并在需要时调用它。
添加回答
举报