約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:ヌル} < - これは関数の後にconsole.logある
- 100msの後
- REAL_VALUE < - これはコンソールであります.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を使っていると書いています。はい、これも私が期待していることですが、実行の順序が正しいとは思われません。 – PumpkinSeed
私は謝罪しました。私はこれを理解しようとします、それはあなたのために働くはずです...私はnodejsコードで非同期待機パターンを使用し、素晴らしい動作します。 –