【发布时间】:2017-02-01 00:27:51
【问题描述】:
我想以与 Angular 的 defer.resolve 和 Javascript Promise 对象相同的方式解析一个 Promise 对象。 换句话说:我想创建一个要返回的虚拟承诺对象。此承诺将在稍后解决。
在 Angular 中我会这样写:
...
$scope.checkThis = { test: false };
function getPromise() {
var deferred = $q.defer();
var data = [1, 2, 3];
function resolvePromise() {
deferred.resolve(data);
}
$scope.$watch("checkThis.test", function(newVal, oldVal) {
if (newVal) {
resolvePromise();
}
});
return deferred.promise;
}
$scope.getData1 = function() {
return getPromise();
};
$scope.getData2 = function() {
return getPromise();
};
...
如何使用普通的 Javascript Promise 对象实现相同的效果?我看不到如何使用 Promise 构造函数,因为有一个事件($scope.checkThis.test 变为 true)会触发多个解析。
【问题讨论】:
-
您所说的“会触发多个解析的事件”是什么意思?为什么这对 deferred 有效,但对 promise 构造函数无效?
标签: javascript angularjs promise deferred resolve