Итак, у меня есть функция, которая должна немедленно возвращать отклоненное или разрешенное обещание, то есть это в основном синхронная функция, которую я хочу «обещать».
То, что я обычно делаю в таких случаях, выглядит примерно так:
func() {
// some code to check for an error
if (hasError)
return Promise.reject(new Error("Failure"));
}
return Promise.resolve("Success");
}
Теперь, когда в ES2017 есть функции "асинхронности", кажется, что я тоже могу сделать это:
async func() {
// some code to check for an error
if (hasError)
throw new Error("Failure");
}
return "Success";
}
Так что я в основном использую async
просто для "обещания""моя функция, без использования await
в теле функции в любом месте.На мой взгляд, этот вариант должен быть точно таким же.Я прав или есть какие-то дополнительные побочные эффекты, о которых я не знаю здесь?
Я думаю, что предпочел бы этот паттерн, так как он немного короче, из одного только определения функции очень ясно, что онisync, и любые ошибки JavaScript (например, ошибки типа) также могут привести к отклонению, что заставит мой общий код реагировать более изящно в случае непредвиденных ошибок.