资讯专栏INFORMATION COLUMN

AngularJS 使用 Promise

voidking / 2033人阅读

摘要:如何在中使用要在中使用要使用的内置服务。用来拒绝可以为字符串对象等。获取的执行状态然后使用这个函数来传递它。无论是成功了还是失败了当结果可用之后都会立即异步调用或者在被执行或者拒绝之前可能会被调用到多次以提供过程状态的提示。

如何在 AngularJS 中使用 Promise

要在 AngularJS 中使用 Promise, 要使用 AngularJS 的内置服务 $q

我们可以先使用 $qdefer() 方法创建一个 deferred 对象, 然后通过 deferred 对象的 promise 属性, 将这个对象变成一个 promise 对象; 这个 deferred 对象还提供了三个方法, 分别是 resolve(), reject(), notify()

HTML 代码:





    demo
    
    



    

JS 代码:

angular.module("myApp", [])
    .controller("myController", ["$scope", "$q", function($scope, $q) {
        $scope.flag = true
        $scope.handle = function() {
            // 创建一个 deferred 对象
            var deferred = $q.defer()
            // 创建一个 promise 对象
            var promise = deferred.promise

            promise.then(function(result) {
                alert("Success: " + result)
            }, function(error) {
                alert("Fail: " + error)
            })

            if ($scope.flag) {
                deferred.resolve("you are lucky!")
            } else {
                deferred.reject("sorry, it lost!")
            }
        }
    }])

$qdefer() 方法创建的对象具有哪些方法

resolve(value): 用来执行 deferred promise, value 可以为字符串, 对象等。

reject(value): 用来拒绝 deferred promise, value 可以为字符串, 对象等。

notify(value): 获取 deferred promise 的执行状态, 然后使用这个函数来传递它。

then(successFunc, errorFunc, notifyFunc): 无论 promise 是成功了还是失败了, 当结果可用之后, then 都会立即异步调用 successFunc, 或者 errorFunc, 在 promise 被执行或者拒绝之前, notifyFunc 可能会被调用0 到 多次, 以提供过程状态的提示。

catch(errorFunc)

finally(callback)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86878.html

相关文章

  • AngularJS中$q的promise使用及链式调用传值问题

    摘要:规范中文是提供的一个服务。实际调用这个方法最终在此处加入到队列中定义此处调用进入此处是链式调用传参关键,实际是上一个的的返回值,所以能知道,如果需要所有的都能取到异步任务的返回值,就得在的函数中,将值返回。 promise是什么 这里不解释promise是什么,因为我相信你来看文章的时候已经知道你什么是promise了。此处有promise规范。 Promise/A+规范 中文Prom...

    hiyayiji 评论0 收藏0
  • angularjs利用ui-route异步加载组件

    摘要:异步加载各个组件就很有必要。在这里我就以为框架来进行异步加载说明。而为了将服务进行异步加载我们不能用普通的或者。而需要调用或者如果采用进行编译打包的话就需要的支持,这样可以对进行拆分打包,达到异步加载的目的。 ui-route相比于angularjs的原生视图路由更好地支持了路由嵌套,状态转移等等。随着视图不断增加,打包的js体积也会越来越大,比如我在应用里面用到了wangeditor...

    lunaticf 评论0 收藏0
  • 使用 Flask 和 AngularJS 构建博客 - 2

    摘要:我们将使用方法创建一个。我们传递一个布尔类型,这个就是我们早先讨论的的参数。再使用和构建博客教程系列的第三部分见。所有的源码都在上,但是应用程序的源码还没有放上去,因为我们还没有完成它,等到第三部分写完以后再放全部的源码到上。 注:该文作者是 John Kevin M. Basco,原文地址是 Building a blog using Flask and AngularJS P...

    awokezhou 评论0 收藏0
  • 使用 AVOS Cloud JavaScript SDK 和 AngularJS 创建 一个 Tod

    摘要:注意并不是一个的值组合,比如有方法,所以不能这样获取属性。需要创建一个自己的应用,并在初始化的时候替换掉里的。关于通知发生变化除了通过,还可以借助或者。 为什么选择这两个库做 Todo AVOS Cloud JavaScript SDK 负责把数据存储在服务器,提供了 数据查询,保存,更新等常用操作的方法。AngularJS 对于增删改查类型的应用场景非常合适。这块主要用到了 Ang...

    MkkHou 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<