我讀了約await
停止執行,而承諾沒有得到解決。我試圖做到以下幾點在我的陣營原生應用程序:ES6/7等待異步功能
static async getFromStorage(key) {
const value = await AsyncStorage.getItem(key);
console.log(value);
return value;
}
console.log(Class.getFromStorage("test"));
,但我得到的,而不是按照實際價值(瀏覽器並沒有讓我複製時間戳...):
- 無極{_45:0,_81:0,_65:空,_54:空} < - 這是功能
- 100ms後,
- REAL_VALUE <後的console.log - 這是控制檯.log來自函數
那麼爲什麼我的代碼沒有等待解決諾言?
UPDATE
@thedude建議:
async function waitForStorage() {
console.log(await getFromStorage());
}
waitForStorage();
這個解決方案的問題,我需要什麼我想使用的類。但是當我做someVar = await getFromStorage()
時,我得到了500錯誤。我可以等它,因爲它是100ms。
例如:
someVar = await getFromStorage("token");
checkToken(someVar);
您是否使用了transpilier如巴貝爾? es6/7在任何地方都不支持。關於異步等待的要點是以同步方式編寫異步代碼。在你等候的聲明應該被執行之前什麼都沒有,直到等待的許諾被解決或被拒絕。 –
@KyleRichardson我寫道我使用的是React-native,它使用了Babel。是的,這是我期待的等待,但似乎執行的順序是不正確的。 – PumpkinSeed
我的歉意,我錯過了 - 原聲部分。我會試圖找出它,它應該爲你工作......我在我的nodejs代碼中使用異步等待模式,它奇妙地工作。 –