异步映射使`this``undefined`

时间:2017-04-21 08:15:47

标签: typescript asynchronous async-await async.js

在一个打字稿类中,我试图调用异步成员方法。这是失败的,因为调用的方法似乎不再具有this属性的访问权限 - 它显示为undefined

我希望有一种方法可以将方法显式绑定到类,或者在异步调用时向我的集合成员传递一些上下文。

这里有一些上下文代码:

class SomethingService implements SomethingServiceInterface {
    private MAX_ASYNC_THINGS = 10;

    constructor(@inject("SomethingRepository") private somethingRepository,
                @inject("OtherThingRepository") private otherThingRepository) {
        // setup, get logger, etc
    }

    public entryPoint(): Promise<Thing[]> {
        return this.getThings()
            .then((things: Thing[]) => {
                return async.mapLimit(things, this.MAX_ASYNC_THINGS, this.checkupThings, (err, things) => {
                    if (!err) return Promise.all(things);
                    else throw err; 
                });
            });
    }

    private checkupThings(thing: Thing): Promise<Thing> {
        return this.otherThingRepository.getAllThings()
            .then((otherThings) => {
               // business logic checking Thing against OtherThings or w/e
            });
    }
}

无论是否在this.checkupThings中的async.mapLimit调用中包含对asyncify的引用,或者checkupThings是否定义为private async checkupThings,我都会遇到这种情况。

0 个答案:

没有答案