Как использовать Async и ждать в действиях на Google и API - PullRequest
0 голосов
/ 27 сентября 2018

Я выполняю действия в Google, использующем API, и использую обещание запроса для его создания.Но при вызове API я вычислил среднее время, которое занимает 0,5 секунды, поэтому я пытаюсь ждать его 0,5 секунды, но при развертывании этого кода я получаю сообщение об ошибке

 .then( async(parseBody)=>{

        for(var i=0;i<parseBody.passengers.length;i++){
            data.push(parseBody.passengers[i].current_status);

        }   
        console.log(data);
        // sleep.sleep(0.5);
        await sleep(2000)
        conv.ask(`Ticket's current status is ${data}`);

, а ошибка 32:33 error Parsing error: Unexpected token => Пожалуйста, помогите мне найти лучшее решение этого вопроса, я впервые работаю с API

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Вы указали, что развертываете это «используя Firebase» и, вероятно, стандартную конфигурационную среду для него.Эта конфигурация по умолчанию предназначена для Node 6, однако вы используете «асинхронный» в своем коде, который доступен в Node 8.

Вы можете переключить свой проект на Node 8, который все еще поддерживает бета-версию Firebase.В своем файле package.json вы можете добавить это свойство к объекту JSON:

"engines": {"node": "8"}

В качестве альтернативы, вы можете попробовать переписать это без асинхронного / await.Я не проверял это (в основном потому, что я понятия не имею, какую функцию sleep() вы используете), но что-то вроде этого:

.then( parseBody =>{
    for(var i=0;i<parseBody.passengers.length;i++){
        data.push(parseBody.passengers[i].current_status);

    }   
    console.log(data);
    return sleep(2000);
})
.then( () => {
    conv.ask(`Ticket's current status is ${data}`);
});

(Имейте в виду, не имеет смысла, почему вывообще жду. Кажется очень странным, что вы получите результаты обратно, но результаты недействительны в течение некоторого периода времени после этого.)

0 голосов
/ 27 сентября 2018

Работая с обещаниями, вы можете объединить больше .then ()

Итак, вы можете сделать что-то вроде этого:

.then( (data) => {
    //do stuff with data
    return data;
})
.then( (data) => {
    //Here data is what you returned in then() before
    //do stuff with data
});

Кстати, ошибка, которую вы получаете, потому что у вас есть синтаксическая ошибкав вашем коде это должно быть:

.then( async(parseBody)=>{
    for(var i=0;i<parseBody.passengers.length;i++){
        data.push(parseBody.passengers[i].current_status);

    }   
    console.log(data);
    // sleep.sleep(0.5);
    await sleep(2000)
    conv.ask(`Ticket's current status is ${data}`);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...