Асинхронная карта делает это "неопределенным"

59
9

В классе типов я пытаюсь вызвать метод async-члена. Это не работает, поскольку метод, который вызывается, больше не имеет доступа к 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.

спросил(а) 2017-04-21T11:15:00+03:00 3 года, 6 месяцев назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема