我试图在打字稿中创建一个对话框系统。创建一个Q promise并稍后调用它
预期的用途是调用者会做这样的事情;
dialogBox.showDialog().then((result: DialogResult) => {
// Handle the dialog result
});
我的DialogBox
类可能会有这样的一些方法;
private promise : Q.Promise<DialogResult>;
public showDialog() : Q.Promise<DialogResult>{
this.promise = ... // How to create this promise?
return this.promise;
}
public void setResult(result : DialogResult){
// What to do here?
}
每当用户点击对话框中的某个按钮,就会调用类似这样的东西;
dialogBox.setResult(theResult);
这应该解决/履行由showDialog
方法创建的承诺。
但我真的不知道这是否可能与Q,所以,如何实现(承诺相关部分)showDialog
和setResult
。任何人有任何想法?
更新完整性;感谢Bergi,这是我最后的工作代码。结束了使用延期
export class DialogBox implements INotification {
private deferred: Q.Deferred<DialogResult>;
constructor(public message: string,
public header: string,
public buttons?: DialogResult[]) {
}
public showDialog(): Q.Promise<DialogResult> {
this.deferred = Q.defer<DialogResult>();
// My logic for displaying the box goes here
return this.deferred.promise;
}
public setResult(result: DialogResult) {
this.deferred.resolve(result);
}
}
退房的源ngDialog。它具有基于承诺的对话框的实现。 https://github.com/likeastore/ngDialog – mccainz 2014-10-20 18:50:22