ms-dred
@ms-dred
Вечно что то не то и что то не так...

В чем отличие при обращении к коллекции then() или .exec()?

Работает и то и то и все вместе
Coll.find().exec()
Coll.find().then()
Coll.find().exec().then()

В чем разница и что лучше использовать?

В случаях с такой выборкой все понятно
Coll.find().then(/**blablabla**/).catch(/**throw**/)

Но и ее можно выполнить опять же вот так
Coll.find().exec().then(/**blablabla**/).catch(/**throw**/)
  • Вопрос задан
  • 480 просмотров
Решения вопроса 2
Negezor
@Negezor
Senior Shaurma Developer
Просто сокращение от
Coll.find().exec().then(/**blablabla**/)
Я сам так делаю
then(thenFn, catchFn) {
	return Promise.resolve(this.run()).then(thenFn, catchFn);
}

Вот с библиотеки код запроса
Query.prototype.then = function(resolve, reject) {
  return this.exec().then(resolve, reject);
};
Ответ написан
Комментировать
@Abcdefgk
Либо то, либо другое. И то, и другое - можно, но бессмысленно.
В exec() передаётся два аргумента - ошибка и данные (вернее, данные в аргумент callback-функции), в then() - один, естественно, только данные (точнее, данные в аргумент resolve).
Then - это использование промиса. Это значит, что можно - как обычно с Promise - делать return результата (т.е. передавать его в следующий then), а потом ещё раз then, и ещё раз... - ну, если надо такое. А в общем случае - без разницы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы