javascript 异步函数返回值的几种方法

在我们的编码过程中,为了满足业务需求,经常需要获取javascript 异步函数的返回值。今天就来汇总一下拿js返回值的几种方式。

1,通过回调函数的方式来拿返回值,这个想必大家不会陌生

function getSomething(cb) {
    var r = 0;
    setTimeout(function() {
        r = 2;
        cb(r)//回调函数
    },10)
}
function compute(x) {
    alert(x * 2);
}
getSomething(compute);

2.通过promise的方式,这个之前有做过详细的介绍

function getSomething() {
    var r = 0;
    return new Promise(function(resolve) {
        setTimeout(function(){
            r = 2;
            resolve(r);
        },10)
    })
}
function compute(x) {
    alert(x * 2);
}
getSomething().then(compute);

3.通过async的方式

function getSomething() {
    var r = 0;
    return new Promise(function(resolve) {
        setTimeout(function() {
            r = 2;
            resolve(r);
        },10)
    })
}
async function compute() {
    var x = await getSomething();
    alert(x * 2);
}
compute();

4.通过generator方式实现

function getSomething() {
    var r = 0;
    setTimeout(function() {
        r = 2;
        it.next(r);
    },10);
}
function *compute(it) {
    var x = yIEld getSomething();
    alert(x * 2);
}
var it = compute();
it.next();
//同步的写法实现异步的逻辑

5.通过promise和generator相结合的方式

function getSomething() {
    var r = 0;
    return new Promise(function(resolve) {
        setTimeout(function() {
            r = 2;
            resolve(r);
        },10)
    })
}
function *compute() {
    var x = yield getSomething();
    alert(x * 2);
}
var it = compute();
it.next().value.then(function(value) {
    it.next(value);
})


相关阅读

添加新评论