すべてのエクスポートがトップレベルに表示されている必要があります。あなたが望むように、何らかの非同期エクスポートを行う方法はありません。
私はそれを見る方法には2つの選択肢があります。モジュールの消費者はただ、他の約束と同じように、.then
を使用して値にアクセスしなければならないことを意味
import {Storage} from "@ionic/storage";
//...
export const FirstRunPagePromise = storage.get("setup_done").then((val)=>{
return val ? 'valueA' : 'valueB';
})
:最初に、そしておそらく最も簡単な、ちょうど約束自体をエクスポートすることです。
あなたの2番目のオプションは、それが解決され、変数に値を代入し、その変数のgetter関数をエクスポートすることです:
import {Storage} from "@ionic/storage";
//...
let FirstRunPage: string;
storage.get("setup_done").then((val)=>{
FirstRunPage = val ? 'valueA' : 'valueB';
});
export function getFirstRunPage() {
return FirstRunPage;
}
あなたは変数自体をインポートすると、あなたを与えるためにゲッターを使用する必要があります約束が解決したときに更新されないコピー。。
このアプローチでは、あまりにも早い時期にアクセスすると、でもの値に同期してアクセスできます。これはundefined
になります。だからあなたのコードはすべて、値が最初に存在するかどうかを確認してから使用しなければなりません。つまり、コードにアクセスするコードは、約束が解決された後にのみ実行されるということを開発者として知る必要があります。
個人的に私はオプション1をお勧めしますが、私は前に両方を行っており、最終的には使用例にもよります。あなたの状況に合ったことをしてください。
しかし、なぜですか?なぜ、別のモジュールでリクエストを行い、そこで使うのですか? 「後で輸出する」ことは不可能です。モジュールが評価され、モジュールのエクスポートが別のモジュールにロードされます。今待っている。 – Li357
これは、そこに何かを動的にエクスポートする意味がありません。いったん使用可能なものがあれば、内部プロパティの1つを変更するオブジェクトをエクスポートしたり、値を返すPromiseをエクスポートしたりすることができます。 – zeh