【发布时间】:2017-03-07 15:11:45
【问题描述】:
我正在构建一个 Cordova 插件 以与 Ionic2 一起使用。我对 Cordova(和自定义插件)有一定的经验,但对 Ionic2 比较陌生(因此也是 Angular2 的新手,TypeScript)。
(我现在要问的是,我以前用 Jquery Deferred 来管理它)
在我的“app.component.ts”文件中:
import...
declare var MyPlugin: any;
@Component({
templateUrl: 'app.html'
})
export class MyApp {
...
initializeApp() {
this.platform.ready().then(() => {
StatusBar.styleDefault();
MyPlugin.action();
});
}
...
}
我不会详细说明我的插件的“plugin.xml”文件。这很好用。
“MyPlugin.js”是这样的:
var PLUGIN_NAME = "MyPlugin";
var MyPlugin =function(){};
MyPlugin.action(){
cordova.exec(
successResultHandler,
errorResultHandler,
PLUGIN_NAME,
action,
[]
);
}
exports.module=MyPlugin;
在链接到“MyPlugin.js”文件的 Java 类中,我有类似的内容:
public class MyPlugin extends CordovaPlugin {
@Override
public boolean execute(String action, final JSONArray args, final CallbackContext callbackContext) throws JSONException {
//something async
callbackContext.success()
}
}
当Java类触发callbackContext.success时,JScordova.exec会启动函数successResultHandler。 我想知道如何使用 Angular2 Promise 来捕获异步事件???
我开始编写一些代码,但我应该使用的顺序没有意义。
我正在考虑在“MyPlugin.js”中做类似的事情:
MyPlugin.action(){
return new Promise(function(resolve,reject){
cordova.exec(
successResultHandler,
errorResultHandler,
PLUGIN_NAME,
action,
[]
);
});
}
但当然没有任何意义,你如何在resolve中捕获函数successResultHandler的结果。
有人有想法吗?
【问题讨论】:
标签: cordova angular promise cordova-plugins ionic2