【发布时间】:2018-05-19 20:14:59
【问题描述】:
我是 JavasSript 的 async、await 和 promise 功能的新手。
我正在做的是,
async function sendTextMessage(text) {
console.log("----1----");
var messageData = {
message: {
text: text
}
};
await callSendAPI(messageData);
}
async function sendImageMessage(imageUrl) {
console.log("----2----");
var messageData = {
message: {
url: imageUrl
}
};
await callSendAPI(messageData);
}
async function sendQuickReply(replies) {
console.log("----3----");
var messageData = {
message: {
text: text,
quick_replies: replies
}
};
await callSendAPI(messageData);
}
async function callSendAPI(messageData) {
await request({
uri: 'https://graph.facebook.com/v2.6/me/messages',
qs: {
access_token: config.FB_PAGE_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);
}
});
}
我在一个 switch 案例中调用这个函数,例如,
async function send(){
await sendTextMessage(text);
await sendImageMessage(img);
await sendQuickReply(replies)
}
send()
但是虽然响应显示sendImageMessage() 最后是因为当我发送imageUrl 以生成响应时,此功能可能尚未准备好。
【问题讨论】:
-
你能分享一下你的问题,它有帮助
-
如果您是新手,请按顺序了解异步编程概念,例如
callbacks、promises、async、await。否则,您最终可能会感到困惑。 -
callSendAPI函数中调用的请求函数是什么,你能描述一下吗? -
@PraveenSoni Request 函数将根据它从三个函数中获得的数据生成有效负载,并将其发送到特定的 Facebook 帐户。
-
是
requestfn 是你制作的,还是一些库功能?你也可以发一下吗
标签: javascript node.js asynchronous promise es6-promise