2016-12-11 8 views
1

私のCordovaプロジェクトでは、after_prepareにRequireJS最適化(r.js)を行うフックがあります。その最適化は本質的に非同期なので、すべての最適化が完全に完了する前に私のフックコードが戻ります。Cordovaに非同期フックが完了するのを待ちます

たとえば、cordova run browserを実行すると問題が発生します。最初のページの読み込みでは、最適化がまだ完了せず、サイトが壊れています。

特定のフックでコールバックが発生するまで、Cordovoaのビルドプロセスをブロックする方法はありますか?または、オプティマイザをブロッキング/同期の方法で実行できますか?

私が考えることのできる別の方法は、最適化のために別のプロセスを使用し、それを完了するためにメインでビジーウェイトを使用することですが、それは過労と悪い練習のようです。

答えて

1

組み込みの約束モジュールを使用して、フックが解決されるまでCordovaの処理をブロックすることができます。 何かこれらの行に沿って:

#!/usr/bin/env node 

var deferral; 

function doSomethingAsync(){ 
    somethingAync 
     .success(function(){ 
      deferral.resolve(); 
     }) 
     .fail(function(err){ 
      deferral.reject(err); 
     }); 
} 

module.exports = function(ctx) { 
    deferral = ctx.requireCordovaModule('q').defer(); 
    doSomethingAsync(); 
    return deferral.promise; 
}; 
+0

素晴らしい、私が探していたもの。私は何とか自分でドキュメント内でこれを見つけることができませんでした... –

関連する問題