ES6/7 等待异步函数
ES6/7 await for async function
我读到 await
在 promise 未解决时停止执行。我正在尝试在我的 React-native 应用程序中执行以下操作:
static async getFromStorage(key) {
const value = await AsyncStorage.getItem(key);
console.log(value);
return value;
}
console.log(Class.getFromStorage("test"));
但我得到的是以下而不是实际值(Chrome 不允许我复制时间戳...):
- Promise {_45: 0, _81: 0, _65: null, _54: null} <- 这是函数
之后的console.log
- 100 毫秒后
- REAL_VALUE <- 这是来自函数
的 console.log
那么为什么我的代码不等待解决承诺?
更新
@thedude 建议:
async function waitForStorage() {
console.log(await getFromStorage());
}
waitForStorage();
这个解决方案的问题我在 class 我想要使用的东西中需要它。但是当我执行 someVar = await getFromStorage()
时,出现 500 错误。我可以等它,因为它是 100 毫秒。
例如:
someVar = await getFromStorage("token");
checkToken(someVar);
代码 运行 console.log
也应该标记为 async
并且它也应该 await
return 值 getFromStorage
;
例如这会起作用:
async function waitForStorage() {
console.log(await getFromStorage());
}
waitForStorage(); // now the console messages should be in the correct order
或者您可以等待 promise 的解决:
getFromStorage("token").then(someVar => checkToken(someVar))
我读到 await
在 promise 未解决时停止执行。我正在尝试在我的 React-native 应用程序中执行以下操作:
static async getFromStorage(key) {
const value = await AsyncStorage.getItem(key);
console.log(value);
return value;
}
console.log(Class.getFromStorage("test"));
但我得到的是以下而不是实际值(Chrome 不允许我复制时间戳...):
- Promise {_45: 0, _81: 0, _65: null, _54: null} <- 这是函数 之后的console.log
- 100 毫秒后
- REAL_VALUE <- 这是来自函数 的 console.log
那么为什么我的代码不等待解决承诺?
更新
@thedude 建议:
async function waitForStorage() {
console.log(await getFromStorage());
}
waitForStorage();
这个解决方案的问题我在 class 我想要使用的东西中需要它。但是当我执行 someVar = await getFromStorage()
时,出现 500 错误。我可以等它,因为它是 100 毫秒。
例如:
someVar = await getFromStorage("token");
checkToken(someVar);
代码 运行 console.log
也应该标记为 async
并且它也应该 await
return 值 getFromStorage
;
例如这会起作用:
async function waitForStorage() {
console.log(await getFromStorage());
}
waitForStorage(); // now the console messages should be in the correct order
或者您可以等待 promise 的解决:
getFromStorage("token").then(someVar => checkToken(someVar))