使用 q.when() 將簡單值包裝到 promise 中

如果你只需要將值包裝到 promise 中,則不需要使用如下所示的長語法:

//OVERLY VERBOSE
var defer;
defer = $q.defer();
defer.resolve(['one', 'two']);
return defer.promise;

在這種情況下,你可以寫:

//BETTER
return $q.when(['one', 'two']);

$ q.when 及其別名$ q.resolve

將可能是值的物件或(第三方)包裝成$ q 承諾。當你處理可能是或可能不是 promise 的物件,或者 promise 是來自不可信任的源時,這非常有用。

- AngularJS $ q 服務 API 參考 - $ q.when

隨著 AngularJS v1.4.1 的釋出

你還可以使用 ES6 一致別名 resolve

//ABSOLUTELY THE SAME AS when
return $q.resolve(['one', 'two'])