从异步/等待诺言中返回值

时间:2018-09-28 15:41:23

标签: javascript asynchronous promise async-await

我试图找到一个简单的示例,说明如何从async / await返回值,在async函数之外可以轻松访问该值。

以下两个示例是否被视为从async / await函数返回值的最佳方法?

换句话说,如果需要保存从async / await返回的值,并将其用于代码的其他部分,那么保存该值的最佳方法是什么?

这是easiest example i could find:

async function f() {
    return 1;
}
var returnedValue = null;   // variable to hold promise result 
f().then( (result) => returnedValue = result );   
console.log(returnedValue); // 1

或者使用对象会更好吗?

async function f(varInput) {
    varInput.value =  1;
}
myObject = {} ;  myObject.value=null;  
f(myObject);
console.log(myObject.value);  // 1

谢谢。

1 个答案:

答案 0 :(得分:0)

我的回答在这里涉及两个主题: 1)异步函数返回一个可解析为值的promise。因此,例如,可以按照您的示例使用第一个函数。也可以这样使用:

async function() {
const x = await f();
}

2)不变性-第二种解决方案可以使用,但会使您的功能“不纯净”。它本身并不坏,但是请注意这可能引起的副作用(例如,如果在不通知其他组件的情况下更改应用程序范围内的单例值,则应用程序的某些部分可能与数据不同步) 。 希望这能回答您的问题。