#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 я обновляю, пожалуйста, проверьте. если это не сработает, не волнуйтесь, мы все равно добьемся успеха