在异步回调中调用super

时间:2017-02-23 17:35:18

标签: javascript asynchronous ecmascript-6

我目前正在尝试使用构造函数内部的回调运行异步函数。然后我需要从该回调中获取数据并在创建类的实例时使用它。我的代码目前看起来像这样:

class Foo extends Bar {
    constructor(data) {
        someAsyncCall((response) => {
            data.a = response;
            super(data);
        });
    }
}

非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:1)

在我看来,我不会在构造函数中做到这一点。使用Q库和另一个辅助类作为数据访问层。

HelperClass.getFooById(id)
    .then(function (data) {
        return new Foo(data);
    })

getFooById方法将使用Q.defer(),并在数据解析后调用Q.resolve(data)

如果在构造函数内部执行此操作,即使已经有数据,也无法在不发出请求的情况下创建该类的实例。

Q Library:https://github.com/kriskowal/q