如何在Google和API上使用异步和等待操作

时间:2018-09-27 10:33:53

标签: javascript node.js async-await actions-on-google

我正在使用API​​在Google上进行操作,并且正在使用请求承诺来构建它。但是在调用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 :(得分:0)

使用promises可以连接更多.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}`);
});

答案 1 :(得分:0)

您表示要部署此“使用Firebase”,并且可能是其默认配置环境。此默认配置用于节点6,但是您在代码中使用“异步”,这在节点8中可用。

您可以将项目切换到Node 8,该节点仍处于对Firebase的Beta支持中。在package.json文件中,您可以将此属性添加到JSON对象:

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

或者,您可以尝试在不进行异步/等待的情况下重写它。我尚未对其进行测试(主要是因为我不知道您使用的是什么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}`);
});

(请介意,您根本不知道为什么要等待。要返回结果似乎很奇怪,但是在那之后的一段时间内结果无效。)< / p>