美文网首页
结合async/await使用Promise对象的api(all

结合async/await使用Promise对象的api(all

作者: pipu | 来源:发表于2019-10-24 15:23 被阅读0次

结合async/await使用Promise对象的api(all,race)

Promise 和 async/await 是新版本的js中的受欢迎的更新, 下面介绍怎么结合async/await使用Promise对象的allrace等方法,这些方法的参数都是接收一个可以放置promise对象的数组。


const resolve1 = () => {
    return new Promise((resolve) => {
        setTimeout(() => resolve(200), 200);
    })
};

const resolve2 = async () => {
    return await new Promise((resolve) => {
        setTimeout(() => resolve(1000), 1000);
    })
};

const resolve3 = () => {
    return new Promise((resolve) => {
        setTimeout(() => resolve(2000), 2000);
    })
};

(async function() {
    let result = await resolve1();
    console.log(result); // 200
    result = await resolve2();
    console.log(result); // 1000
    result = await resolve3();
    console.log(result); // 2000
})()


1.Promise.all 方法

Promise.all方法接收一个放置promise对象的数组,返回一个包装好的promise对象

const asyncFunctions = [
    resolve1(),
    resolve2(),
    resolve3(),
];
(async function() {
let result = await Promise.all(asyncFunctions);
console.log(result); // [200,1000,2000]
})()

2.Promise.race 方法

Promise.all方法接收一个放置promise对象的数组,返回一个包装好的promise对象

const asyncFunctions = [
    resolve1(),
    resolve2(),
    resolve3(),
];
(async function() {
let result = await Promise.race(asyncFunctions);
console.log(result); //200
})()

总结

像resolve2这种async方法返回值是promise对象,这样就可以放到promise数组中去,Promise.all 和 Promise.race 方法返回的都是promise 对象也可以使用async/await方案转成同步写法。

参考链接

Dealing with Promises In an Array with async/await

相关文章

网友评论

      本文标题:结合async/await使用Promise对象的api(all

      本文链接:https://www.haomeiwen.com/subject/xwfdvctx.html