Javascript 然后在Promise.resolve()之后未激发方法
在Ionic2中,我试图设计一个javascript方法,该方法将打开一个模态webview,让用户输入一些数据,然后在模态webview关闭时触发回调 我正试图用承诺来实现这一点 计划如下:Javascript 然后在Promise.resolve()之后未激发方法,javascript,ecmascript-6,Javascript,Ecmascript 6,在Ionic2中,我试图设计一个javascript方法,该方法将打开一个模态webview,让用户输入一些数据,然后在模态webview关闭时触发回调 我正试图用承诺来实现这一点 计划如下: var openWebviewPromise:any; this.openWebview(path).then(()=>{ //this line after then is never fired! console.log("do something when webview is cl
var openWebviewPromise:any;
this.openWebview(path).then(()=>{
//this line after then is never fired!
console.log("do something when webview is closed");
});
openWebview = (path:string) => {
// do something to listen to webview closed even
this.openWebviewPromise = new Promise((resolve, reject) => {
// open the modal webview here.
});
return this.openWebviewPromise;
}
// Then I listen to event when the modal iframe is closed manually by user, I tried to call .resolve when that happens, hoping then() will be called.
window.addEventListener('message', this.formCloseEventHandler);
formCloseEventHandler = (event:any) =>{
if(event.data == "embed-auto-close-popup"){
if(this.openWebviewPromise !== undefined){
this.openWebviewPromise.resolve();
}
}
}
它不起作用。当modal关闭时,我们触发此.openWebviewPromise.resolve(),但不会触发then行 你应该在写作
openWebview(path:string) {
return new Promise((resolve, reject) => {
… // open the modal webview here.
… // do something to listen to webview closed even and call resolve()
// Listen *here* to event when the modal iframe is closed manually by user
window.addEventListener('message', (event:any) => {
if (event.data == "embed-auto-close-popup") {
resolve(); // or reject(new Error(…));
}
});
});
}
你不在匿名函数中调用
resolve()
吗?在这个特定的代码中this.openWebview
和openWebview
是(应该是)两个不同的东西this.openWebviewPromise.resolve
不应存在/不应是函数。你不能从外面解决一个承诺。啊,我明白了。。。。所以我不能在外面解决,当一件事发生。。。