使用 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'])