非同期プロミスが解決された後、同期コードを実行する必要があります。現在、私のコードは次のようになります。Promiseハンドラの同期コード
console.log("Starting");
promiseFunc().
then(function() {
console.log("PromiseFunc done. Doing Synchronous work...");
synchronousFunc1();
synchronousFunc2();
console.log("Synchronous work done");
}).
catch(function(err) {
console.log("Error:" + err);
}).
then(function() {
console.log("Done")
});
すべてが正常に動作している:最初のthen
はpromiseFunc
が解決された後に実行され、最終then
が最後に実行されます。 私は仕様が新しいプロミスかthen
からの価値を返すと思っていますが、私が返すことは何も役に立ちません。ここで
は私の質問です:
- は約束した後、同期コードを実行するためのこの「パターンは」メイクセンスを解決されていますか?
then
ブロックから未定義に戻すことはできますか? - 誰かが約束して
synchronousFunc1
を実装しようと決めたらどうなりますか?これは実行の順序を破ります。 私は、このような急変をしてはならないと思います。代わりに別のasynchronousFunc1
を実装する必要があります。私は正しい? - 私の
catch/then
実装についてはどうですか?最終then
は常に実行する必要があります。catch
ハンドラに例外がスローされた場合、これはうまくいかないと思います。代わりがありますか?私は青い鳥にfinally
ハンドラがあることを知っていますが、私は標準のプロミス機能のみを使用したいと思います。
偉大な答え。ありがとうございました! – krombi