异步返回值

时间:2018-11-17 07:46:29

标签: javascript

是否可以用异步代码返回值?

例如,我有一些异步代码,如下所示:

async function(a,b){
    fetch('url'+b)
    .then(res) => res.json())
    .then(data) => obj = data
    .then() => {
        //writes to html just fine
        var x = obj.jsonvalue;
        var y = obj.otherjsonvalue;

        //create an array of these values
        var z = [x,y];
        return z;
}

很明显,当它返回“ z”时,我可以看到它只是在返回一个承诺。有没有办法返回z的实际值,即数组?

1 个答案:

答案 0 :(得分:1)

也许您正在寻找类似以下示例的内容:

var promise = new Promise(function (resolve){
  resolve(1 + 1);
});

var result = promise.then(function (x) {
  return x + 1;
});

(async function () {
    var number = await result;
    
    console.log(number); // 3
}());


我们可以使用以下语法在异步函数中使用await

(async function () {
    // await some task...
}());

(async () => {
    // await some task...
})();

由于result是一个承诺,我们可以等待它直接获得结果。