首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们是否在使用await的异步函数上使用await?

我们是否在使用await的异步函数上使用await?
EN

Stack Overflow用户
提问于 2021-03-28 03:08:57
回答 2查看 35关注 0票数 0

我有一个Rest API端点/foo/bar,我从异步函数bar()调用它,我从另一个函数foo ()调用该函数,如下所示

代码语言:javascript
复制
async function bar () {
    let result;

    result = await $.ajax({}); /* pseudocode only */
    return result;
}

function foo () {
    let result;

    result = bar ();
    console.log ('This should display before the result, not after it');
    console.log (result);
    console.log ('This should display after the result, not before it');

foo();

我得到了不一致的结果,我想知道这是否是因为我需要像这样使foo异步

代码语言:javascript
复制
async function bar () {
    let result;

    result = await $.ajax({}); /* pseudocode only */
    return result;
}

async function foo () {
    let result;

    result = await bar ();
    console.log ('This should display before the result, not after it');
    console.log (result);
    console.log ('This should display after the result, not after it');

foo();

基本上,我的问题是异步函数中的await是否会使该函数同步(即。它会阻止调用函数,直到await返回?

EN

回答 2

Stack Overflow用户

发布于 2021-03-28 03:13:16

你是对的。异步函数将返回一个Promise,因此,如果您想等待异步函数的响应,则需要await。

票数 0
EN

Stack Overflow用户

发布于 2021-03-28 03:13:39

根据定义,async函数是returns a Promise,因此您可以像处理任何其他Promise一样处理结果。

这基本上意味着您要么使用async/await执行第二个代码片段中的操作

代码语言:javascript
复制
async function foo () {
    let result;

    result = await bar ();
    console.log (result);
}

或者您也可以使用.then

代码语言:javascript
复制
function foo() {
    bar().then(result => console.log(result));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66835149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档