我是Javascript新手,無法理解如何讓我的函數一個接一個運行。我想用Promise來實現這一點。如何使用Node.js中的Promise對異步調用進行排序?
我正在關注Facebook Messenger教程來製作一個聊天機器人。基本上,我想一個接一個地發送消息。
如果我把下面幾行:
sendTextMessage(recipientID, "1");
sendTextMessage(recipientID, "2");
sendTextMessage(recipientID, "3");
sendTextMessage(recipientID, "4");
sendTextMessage(recipientID, "5");
我要留言 「1」 被首先發送。然後,「2」,「3」等。 (而不是在隨機順序,這是這裏的問題被髮送。)
下面是相關的輔助功能。
function sendTextMessage(recipientId, messageText) {
var messageData = {
recipient: {
id: recipientId
},
message: {
text: messageText
}
};
callSendAPI(messageData);
}
這裏是callSendAPI函數。
function callSendAPI(messageData) {
request({
uri: 'https://graph.facebook.com/v2.6/me/messages',
qs: { access_token: PAGE_ACCESS_TOKEN },
method: 'POST',
json: messageData
}, function (error, response, body) {
if (!error && response.statusCode == 200) {
var recipientId = body.recipient_id;
var messageId = body.message_id;
if (messageId) {
console.log("Successfully sent message with id %s to recipient %s",
messageId, recipientId);
} else {
console.log("Successfully called Send API for recipient %s",
recipientId);
}
} else {
console.error("Failed calling Send API", response.statusCode, response.statusMessage, body.error);
}
});
}
我一直停留了一段時間。任何幫助將不勝感激。
我試過了,但沒有奏效。 =(
sendTextMessage(recipientID, "1")
.then(sendTextMessage(recipientID, "2"))
.then(sendTextMessage(recipientID, "3"));
這工作完美。非常感謝!! – Thawsitt