用于解决TypeScript中多个回调的模式

时间:2015-08-19 08:14:11

标签: design-patterns typescript

我正在寻找解决这个经常出现的问题的方法。

假设我在TypeScript中有一个类如下:

class Example {

    constructor() {
        this.work();
        this.doMoreWork();        
    }

    work() {
        // Work on some more borring async work
    }

    doMoreWork() {
        // Going for some borring async work
    }    

    finishedWorking() {
        // Call me when work() and doMoreWork() is finished
    }
}

我想在work()和doMoreWork()完成后调用finishedWorking()。有没有人知道我可以在TypeScript中使用的好模式来解决这个问题?

我知道async和await现在不是一个选项吗?

1 个答案:

答案 0 :(得分:1)

  

我知道async和await现在不是一个选项

简单回答:是的,不是选项

  

我想在work()和doMoreWork()完成时调用finishedWorking()

使用承诺!

constructor() {
    Promise.all([this.work(),this.doMoreWork()])
           .then(()=>finishedWorking());
}

work() {
    return // some promise //;
}

doMoreWork() {
    return // some promise //;
}   

由于大多数用户浏览器本身不支持它(iojs原生支持它!),您可以使用Q之类的内容:https://github.com/kriskowal/q