处理函数的多次返回

时间:2019-10-18 16:44:23

标签: javascript jquery twilio twilio-api

我正在使用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()函数的第一个返回值??

0 个答案:

没有答案