让cordova等待asynchronous挂钩完成

在我的Cordova项目中,我有一个在after_prepare上执行RequireJS优化(r.js)的after_prepare 。 该优化本质上是asynchronous的,所以我的钩子代码在所有的优化完成之前都会返回。

例如,运行cordova run browser时会导致问题:在第一页加载时,优化还没有完成,站点看起来破损。

有没有办法使Cordovoa构build过程阻塞,直到某个钩子触发callback? 或者优化器可以以阻塞/同步的方式运行?

我能想到的另一种方法是使用不同的stream程进行优化和繁忙 – 主要是等待完成,但对我来说,这看起来像是一种矫枉过正的行为。

您可以使用内置的承诺模块来阻止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; };