Как ввести асинхронную функцию в TypeScript, если это пустая функция

#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>