在一个打字稿类中,我试图调用异步成员方法。这是失败的,因为调用的方法似乎不再具有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
,我都会遇到这种情况。