Что в действительности делает $ q.defer ()?
Я изучаю Angular JS и в данный момент пытаюсь понять об обещаниях и асинхронном программировании, и у меня есть сомнения относительно$q.defer()
, Моя точка зрения следующая: обычно, когда люди работают с обещаниями, они делают что-то подобное, учитывая, что $ q уже доступен
function someAsyncFunction() {
var deferred = $q.defer();
/* Do things and if everything goes fine return deferred.resolve(result)
otherwise returns deferred.reject()
*/
return deferred.promise;
}
Что это на самом деле делает? Когда мы делаемvar deferred = $q.defer()
он немедленно переключает все выполнение этой функции в другой поток и возвращает обещание, являющееся ссылкой на результаты этой операции, которая все еще там выполняется?
Об этом мы должны думать при создании асинхронных методов?