gpt4 book ai didi

javascript - 等待通过 call 调用的异步函数或通过 Babel 应用

转载 作者:搜寻专家 更新时间:2023-11-01 04:36:16 25 4
gpt4 key购买 nike

如何await async 函数调用 callapply Babel?

下面是一个示例,其中 getOrdersService 类的 async 方法:

class Service() {
async getOrders(arg1, arg2, arg3) {
return await this.anotherService.getOrders(arg1, arg2, arg3);
}
}

let service = new Service();
// ...
// Babel doesn't compile
// let stream = await service.getOrders.call(this, arg1, arg2, arg3);
// producing SyntaxError: Unexpected token for await
let stream = service.getOrders.call(this, arg1, arg2, arg3);
stream.pipe(res); // obviously not working without await in the prev line

最佳答案

async 函数 返回一个 Promise,await 接受一个 promise。不要求所有 async 函数都通过 await 调用。如果你想在标准 JS 函数中使用异步函数,你可以直接使用 result promise。在您的情况下,使用 .call 调用函数仍将像任何其他函数一样返回一个 promise ,因此您将他们将该 promise 传递给等待:

async function doThing(){
let service = new Service();

var stream = await service.getOrders.call(this, arg1, arg2, arg3)
stream.pipe(res);
}

关于javascript - 等待通过 call 调用的异步函数或通过 Babel 应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30894302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com