私はJavascriptを初めて使用しています。私はこれを達成するためにプロミスを使いたい。Node.jsでPromisesを使用して非同期呼び出しをシーケンスする方法は?
私はFacebookのメッセンジャーのチュートリアルに従ってチャットボットを作っています。基本的には、メッセージを次々と送っていきたいです。
私は次の行を呼び出す場合:
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