1 回答

TA貢獻2039條經驗 獲得超8個贊
現在您為 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并在需要時調用它。
添加回答
舉報