【发布时间】:2014-12-15 19:30:53
【问题描述】:
我正在尝试在打字稿中创建一个对话框系统。
预期用途是调用者会做这样的事情;
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 的源代码。它有一个基于承诺的对话的实现。 github.com/likeastore/ngDialog
标签: javascript typescript promise q