是否可以用异步代码返回值?
例如,我有一些异步代码,如下所示:
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的实际值,即数组?
答案 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
是一个承诺,我们可以等待它直接获得结果。