#javascript #typescript #asynchronous #async-await
#javascript #typescript #асинхронный #асинхронное ожидание
Вопрос:
Вот мой код:
async buildSomething(): any {
const requestData = await request;
requestData.forEach(i => this.table.push(i));
}
Как я должен вводить функцию void, потому что она что-то делает, но ничего не возвращает.
В моем случае я использовал any, но tslint показывает мне это:
Тип ‘any’ не является допустимым типом возврата асинхронной функции в ES5 / ES3, поскольку он не ссылается на значение конструктора, совместимое с обещанием.
Как я должен этого добиться?
Комментарии:
1. это неясно? почему люди ставят -1? чувак, мне просто нужен совет, вот и все
2. Вы пробовали вводить ее как
void
?3. да, то же сообщение tslint
Ответ №1:
Все асинхронные функции что-то возвращают: они возвращают обещания. Итак, вы не хотите void
, вы хотите Promise<void>
async buildSomething(): Promise<void> {
const requestData = await request;
requestData.forEach(i => this.table.push(i));
}
Комментарии:
1. да, ты прав, то же, что и выше, где я могу узнать о дженериках? на каждой странице есть сложные объяснения, и мне трудно их понять
2. Основы заключаются в том, что это [вещь] [другой вещи]. например, «Array<string>» — это «массив строк». Общие термины позволяют описать, как работает тип в целом (т. Е. Они позволяют вам описать, что означает «of» в «массиве строк»), а затем, когда вы его используете, вы можете быть более конкретными. В случае обещания вам нужно быть более конкретным, это то, к чему будет разрешено обещание.
Promise<string>
это обещание, которое преобразуется в строку;Promise<void>
это обещание, которое преобразуется вvoid
Ответ №2:
Возвращаемый тип должен быть Promise<void>