async/await 新手提问

2018-07-25 19:44:19 +08:00
 DongZhe93

请问:类似下面结构的代码有什么优化的空间?刚开始使用 async/await,不知道用法是否正确?!

async function showData(count = 0) {
    let data = await getData();
    if (data > 0.5) {
        if (count < 5) {
            return await showData();
        } else {
            return Promise.reject('无法获取');
        }

    } else {
        return Promise.resolve(data);
    }
}

function getData() {
    return new Promise((resolve) => {
        setTimeout(() => {
            resolve(Math.random());
        }, 1000);
    })
}

async function test() {
    try {
        let data = await showData();
        console.log(data);
    } catch (e) {
        console.log(e);
    }
}

test();
2885 次点击
所在节点    JavaScript
3 条回复
DongZhe93
2018-07-25 19:56:04 +08:00
第五行应该是 return await showData(count + 1);
MinonHeart
2018-07-25 21:11:32 +08:00
在 async 函数中
return 时 await 不必要
return Promise.resolve(data) = return data;
return Promise.reject(msg) = throw msg
e8c47a0d
2018-08-08 13:08:20 +08:00
return Promise.reject('无法获取') 可以换成 throw '无法获取'
return Promise.resolve(data); 可以换成 return data

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/474146

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX