在我的 Cordova 项目中,我有一个 Hook ,它在 after_prepare
上执行 RequireJS 优化 (r.js)。该优化本质上是异步的,因此我的 Hook 代码会在所有优化完全完成之前返回。
例如,这会在运行 cordova run browser
时导致问题:在第一个页面加载时,优化尚未完成,网站看起来很糟糕。
有没有办法让 Cordovoa 构建过程阻塞,直到某个钩子(Hook)触发回调?或者优化器可以以阻塞/同步的方式运行吗?
我能想到的另一种方法是使用不同的流程进行优化,并在主体中忙等待它完成,但这对我来说似乎是一种矫枉过正和糟糕的做法。
最佳答案
您可以使用内置的 promise 模块来阻止 Cordova 在 Hook 解决之前继续进行。 沿着这些线的东西:
#!/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;
};
关于node.js - 让 Cordova 等待异步钩子(Hook)完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41086015/