$q 承诺 - 对象不是函数 [英] $q promises - Object is not a function

查看:27
本文介绍了$q 承诺 - 对象不是函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想运行来自 https://docs.angularjs.org 的承诺示例/api/ng/service/$q,这是我的代码:

angular.module('testControllers').controller('testCtrl', ['$scope', '$q', function($scope, $q) {函数 asyncGreet(name) {//执行一些异步操作,在适当的时候解决或拒绝承诺.返回 $q(函数(解决,拒绝){设置超时(函数(){如果是真的) {resolve('你好,' + 姓名 + '!');} 别的 {拒绝('问候' + 姓名+ ' 是不允许的.');}}, 1000);});}var promise = asyncGreet('罗宾汉');promise.then(函数(问候){console.log('成功:' + 问候);}, 函数(原因){console.log('失败:' + 原因);});}

Chrome 一直告诉我:类型错误:对象不是函数

我在样本中做错了什么?

解决方案

确保你至少使用 1.3 版本的 angularjs 请看下面的演示

var app = angular.module('app', []).controller('firstCtrl', function($scope, $q) {$scope.ver = angular.version.full;$scope.message = ""$scope.asyncGreet = 函数(名称){//执行一些异步操作,在适当的时候解决或拒绝承诺.返回 $q(函数(解决,拒绝){设置超时(函数(){如果是真的) {resolve('你好,' + 姓名 + '!');} 别的 {拒绝('问候' + 姓名+ ' 是不允许的.');}}, 1500);});}promise = $scope.asyncGreet('罗宾汉');promise.then(函数(问候){alert('成功:' + 问候);}, 函数(原因){alert('失败:' + 原因);});});

<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.0/angular.js"></script><div ng-app="app"><div ng-controller="firstCtrl">角度版本:{{ver}}

I wanted to run the promises sample from https://docs.angularjs.org/api/ng/service/$q, here is my Code:

angular.module('testControllers').controller('testCtrl', ['$scope', '$q', function($scope, $q) {

    function asyncGreet(name) {
        // perform some asynchronous operation, resolve or reject the promise when appropriate.
        return $q(function(resolve, reject) {
            setTimeout(function() {
                if (true) {
                    resolve('Hello, ' + name + '!');
                } else {
                    reject('Greeting ' + name + ' is not allowed.');
                }
            }, 1000);
        });
    }

    var promise = asyncGreet('Robin Hood');
    promise.then(function(greeting) {
        console.log('Success: ' + greeting);
    }, function(reason) {
        console.log('Failed: ' + reason);
    });
}

Chrome keeps telling me: TypeError: object is not a function

What did I do wrong with the sample?

解决方案

Make sure that you using angularjs in version 1.3 at least please see demo below

var app = angular.module('app', [])

.controller('firstCtrl', function($scope, $q) {
  $scope.ver = angular.version.full;

  $scope.message = ""

  $scope.asyncGreet  = function (name) {
    // perform some asynchronous operation, resolve or reject the promise when appropriate.
    return $q(function(resolve, reject) {
      setTimeout(function() {
        if (true) {
          resolve('Hello, ' + name + '!');
        } else {
          reject('Greeting ' + name + ' is not allowed.');
        }
      }, 1500);
    });
  }

  promise =  $scope.asyncGreet('Robin Hood');
  promise.then(function(greeting) {
   alert('Success: ' + greeting);
  }, function(reason) {
    alert('Failed: ' + reason);
  });
});

<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.0/angular.js"></script>

<div ng-app="app">
  <div ng-controller="firstCtrl">

    Angular ver: {{ver}} 






  </div>
</div>

这篇关于$q 承诺 - 对象不是函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
前端开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆