我很难猜测如何实际检查函数的返回值是否是一个 promise 。我将 Jasmine 与 Karma 和 angularjs 一起使用。我做了一项服务:
var app = angular.module('myService', []);
function simpleResource ($q) {
this.cget = function () {
var deferred = $q.defer();
return deferred.promise;
};
this.get = function () {
// body...
};
this.save = function () {
// body...
};
this.delete = function () {
// body...
};
}
app
.service('nsResource', simpleResource);
正如您所看到的,cget 方法应该返回一个 Promise,我如何测试返回的值是否实际上是一个 Promise?
最佳答案
(function(angular) {
'use strict';
angular.module('includeExample', ['ngAnimate'])
.controller('ExampleController', ['$scope', '$q',
function($scope, $q) {
$scope.a = "";
$scope.asyncGreet = function(name) {
var deferred = $q.defer();
deferred.notify('About to greet ' + name + '.');
if (true) {
deferred.resolve('Hello, ' + name + '!');
} else {
deferred.reject('Greeting ' + name + ' is not allowed.');
}
return deferred.promise;
};
$scope.promise = $scope.asyncGreet('Robin Hood');
$scope.a = $scope.promise.constructor.name;
}
]);
})(window.angular);
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-beta.1/angular.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-beta.1/angular-animate.js"></script>
<body ng-app="includeExample">
<div ng-controller="ExampleController">
<div class="slide-animate-container">
<span ng-bind="a"><span>
</div>
</div>
</body>
您可以使用构造函数
:
deferred.promise.constructor == Promise
关于javascript - 如何检查 angularjs 服务中的返回值是否是 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32926262/