我正在使用Twilio发送SMS,最近我收到了有关如何在API上进行同步调用以防止“ API调用过多”错误的反馈。 (异步/等待)
这是我的代码:
const sendSMSAsyncFunc = async () => {
while (numberStart < numbersLen) {
try {
let maxNumbers = Math.min(numbersLen, numberStart + recipientAmount);
for (let i = numberStart; i < maxNumbers; i++) {
let number = numbers[i]['phone_number'].replace(/[^\d]/g, '')
if (number.length > 10 && number[0] === '1') {
number = number.substring(1)
cleanNumbers.push('1' + number)
} else {
cleanNumbers.push('1' + number)
}
if (i == maxNumbers - 1) {
console.log("MESSAGE SENDING", i)
var params = {
'body': `${event_sms_message}`,
'messagingServiceSid': 'XXXXXXX',
'to': cleanNumbers
}
console.log("Pre send message")
await sendMessage(params, messageId)
cleanNumbers = []
numberStart = numberStart + recipientAmount;
}
}
}catch(e) {
console.error(e);
}
}
};
发送消息功能
async function sendMessage(params, messageId) {
return client.messages.create(params, function(err, data, message) {
if (err) {
console.log("ERROR:");
console.log(err)
return 'done'
}
else {
console.log("SUCCESS:");
console.log(data)
return 'done'
}
})
.then(message =>
console.log(message.sid)
);
}
问题是我尝试发送一条消息,但它被卡在错误中,而不是移动到下一个“数字”,而是在错误循环中。
这使我认为if (err)
上的返回“完成”无效。有没有一种方法可以退出函数而不必删除client.messages.create()
函数的第一个返回值??