您当前的位置: 首页 > 

qianbo_insist

暂无认证

  • 2浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

nodejs async await promise理解

qianbo_insist 发布时间:2019-09-09 07:28:39 ,浏览量:2

这篇文章是让大家更好理解 nodejs的async 和await 以及promise, 其实await状态虽然是在你需要的步骤里面是同步的,但是整个系统状态是异步的,是异步里面的同步,无需担心系统性能问题。看实例就明白了。

var x = 100;
async function myfunc(param) {
    return new Promise((resolve, reject) => {
        // 模擬
        setTimeout(() => {
            param += 200;
            resolve(param);
        }, 1000);
    })
}
async function myfunc2() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
        resolve('myfunc2');
    }, 1000);
    });
}
async function test() {
    await myfunc2();
    console.log('the one step');
    let result = await myfunc(x);
    console.log(result);// 两秒之后会被打印出来
}
test();
以上输出

$ node testcache.js the one step 300 看起来是同步的,没问题,那么是否阻塞呢? 加上以下语句

for(var i =0;i {
        setTimeout(() => {
           if(1)
            resolve(param);
            else
             reject(0);
        }, second);
    })
}

async function test2() {
    let result1 = await sleep(2000, 'step1');
    let result2 = await sleep(1000, 'step2' + result1);
    let result3 = await sleep(500, 'step3' + result2);
    console.log(result3,result2,result1);
}

test2();

会按照你需要的输出

错误处理方式
async function errorProcess() {
    try {
        let result = await sleep(1000);
        console.log(result);
    } catch (err) {
        console.log(err);
    }
}

reject会捕获到catch里面,自行处理就好

关注
打赏
1663161521
查看更多评论
立即登录/注册

微信扫码登录

0.0475s