内部没有await关键字的异步函数

我一直认为异步函数需要在其中包含“ await”关键字,例如:

async function doTask() {
 let total = await CustomFunction(values);
 console.log(`Main Total: ${total}`);
}
doTask();

但是我也看到了一些类似的定义异步功能而不必等待的情况:

GetData = async ( method,url,params) =>
{
    Axios.request({
        method,params
    });
}

那么在没有“ await”关键字的函数前面添加async关键字有什么意义呢?

yellowmin 回答:内部没有await关键字的异步函数

在您的示例中,它可能是一个错误;我猜在return await前面应该有一个Axios.request

但是,通常,除非调用者显式地仅接受返回Promise的函数,否则声明无等待函数async毫无意义。

,

简单地说,如果您在任何异步函数之前使用await,它将继续等待请求成功。

在您的示例中:

async function doTask() {
 let total = await CustomFunction(values);
 console.log(`Main Total: ${total}`);
 return total;
}
doTask();

在上面的示例中,如果您调用doTask(),则total将包含请求结果。但是,如果您不使用await,则total可能不包含请求结果。

async function doTask() {
 let total = CustomFunction(values);
 console.log(`Main Total: ${total}`);
 return total;
}
doTask();

现在,如果您致电doTask(),则它将返回undefinednull而不是实际请求。

,

将函数标记为异步但内部没有等待是一个坏习惯,因为它会强制您的转译工具(babel /打字稿)向生成的包中添加一些其他代码。
请参阅example和打字稿,尝试删除/添加异步单词。
但是如Juhil Somaiya所说,无需等待的代码将同步工作。

本文链接:https://www.f2er.com/3016570.html

大家都在问