Как у вас есть таймер на bot v4?

#javascript #node.js #azure #bots

#javascript #node.js #azure #боты

Вопрос:

Я хочу использовать таймер на 5 секунд для отображения сообщения, но я получаю сообщение об ошибке. Он находится в Node.Js .

Есть ли способ решить эту проблему? Спасибо

      const HELP_INTENT = 'Help';
     async onTurn(context) {
     Switch(Intent){
       case HELP_INTENT:
       var reply =  MessageFactory.suggestedActions(['Testing','Running'],`How do we help you?`);
     setInterval(() => {
       await dc.context.sendActivity(reply);
       }, 5000);
       break;
       case NONE_INTENT:
       default:
           await dc.context.sendActivity(`Sorry I do not understand you.`);
       break;
     }
  

Ответ №1:

можете ли вы попробовать это

 const HELP_INTENT = 'Help';
         async onTurn(context) {
         Switch(Intent){
           case HELP_INTENT:
           var reply =  MessageFactory.suggestedActions(['Testing','Running'],`How do we help you?`);
           await new Promise(resolve => setTimeout(() => resolve(
            dc.context.sendActivity(reply)
           ), 5000);
           break;
           case NONE_INTENT:
           default:
               await dc.context.sendActivity(`Sorry I do not understand you.`);
           break;
         }
  

Комментарии:

1. Спасибо за помощь, но я получил эту ошибку. Предупреждение о необработанном promiserejectionwarning: отклонение необработанного обещания (идентификатор отклонения: 1): ошибка типа: невозможно выполнить ‘get’ на прокси, который был отозван (узел: 11020) [DEP0018]

2. Я отредактировал код. Как вы думаете, в этом причина? Спасибо

3. @khmerforce когда вы используете await внутри функции. Вы должны заменить всю родительскую функцию на асинхронную функцию. например, функция async(){ var reply = MessageFactory.suggestedActions([‘Testing’,’Running’], How do we help you? ); setInterval(функция async(){ожидает dc.context.sendActivity(ответ);}, 5000); }

4. setInterval(() => { var reply = MessageFactory.suggestedActions([‘Testing’,’Running’], How do we help you? ); await dc.context.sendActivity(reply); }, 5000); перерыв; Я попробовал это и все равно получил ту же ошибку. Не уверен, почему.

5. @khmerforce я обновляю, пожалуйста, проверьте. если это не сработает, не волнуйтесь, мы все равно добьемся успеха