【Angular中的Promise对象($q介绍)】教程文章相关的互联网学习教程文章

浅谈Angular的$q, defer, promise

1. $q $q是Angular的一种内置服务,它可以使你异步地执行函数,并且当函数执行完成时它允许你使用函数的返回值(或异常)。 2. defer defer的字面意思是延迟,$q.defer() 可以创建一个deferred实例(延迟对象实例)。 deferred 实例旨在暴露派生的Promise 实例,以及被用来作为成功完成或未成功完成的信号API,以及当前任务的状态。这听起来好复杂的样子,总结$q, defer, promise三者之间的关系如下所示。 var deferred = $q.defer...

AngularJS中的Promise详细介绍及实例代码

Angular中的Promise 在用jQuery的时候就知道 promise 是 Js异步编程模式的一种模式,但是不是很明白他跟JQuery的deferred对象有什么区别。随着公司项目的进行,要跟后台接数据了,所以决定搞定它。 Promise Promise是一种模式,以同步操作的流程形式来操作异步事件,避免了层层嵌套,可以链式操作异步事件。 我们知道,在编写JavaScript异步代码时,callback是最最简单的机制,可是用这种机制的话必须牺牲控制流、异常处理和函数语...

AngularJS 中的Promise --- $q服务详解

先说说什么是Promise,什么是$q吧。Promise是一种异步处理模式,有很多的实现方式,比如著名的Kris Kwals Q还有JQuery的Deffered。 什么是Promise以前了解过Ajax的都能体会到回调的痛苦,同步的代码很容易调试,但是异步回调的代码,会让开发者陷入泥潭,无法跟踪,比如: funA(arg1,arg2,function(){funcB(arg1,arg2,function(){funcC(arg1,arg2,function(){xxxx....})}) }) 本身嵌套就已经很不容易理解了,加上不知何时才触发回...

详解Javacript和AngularJS中的Promises

比如页面调用google地图的api时就使用到了promise。function success(position){var cords = position.coords;console.log(coords.latitude + coords.longitude); }function error(err){console.warn(err.code+err.message) }navigator.geolocation.getCurrentPosition(success, error);■ 如何处理多个异步方法 如果有很多异步方法需要按序执行呢?async1(success, failure), async2(success, failure), ...asyncN(success, failu...

AngularJS中处理多个promise的方式

在使用AngularJS中处理promise的时候,有时会碰到需要处理多个promise的情况。 最简单的处理就是每个promise都then。如下:var app = angular.module("app",[]); app.controller("AppCtrl", function($q. $timeout){ var one = $q.defer(); var two = $q.defer(); var three = $q.defer(); $timeout(function(){ one.resolve("one done"); }, Math.random() * 1000) $timeout(function(){ two.resolve("two done"); }, Math.random...

Angular中的Promise对象($q介绍)

在用JQuery的时候就知道 promise 是 Js异步编程模式的一种模式,但是不是很明白他跟JQuery的deferred对象有什么区别。随着公司项目的进行,要跟后台接数据了,所以决定搞定它。 Promise Promise是一种模式,以同步操作的流程形式来操作异步事件,避免了层层嵌套,可以链式操作异步事件。 我们知道,在编写javascript异步代码时,callback是最最简单的机制,可是用这种机制的话必须牺牲控制流、异常处理和函数语义化为代价,甚至会让...

javascript-ES6 Promise不更新AngularJS DOM【代码】

这个问题已经在这里有了答案: > Can’t get ES6 promise value to display in AngularJS view 1个我在了解角度分量范围时遇到麻烦.如果我做类似的事情:function myComponent(){this.data = 'Hello World'; }let myModule = angular.module('myModule', []);myModule.component('myComponent', {template: `<div>{{$ctrl.data}}</div>`,controller: myComponent });<sc...

javascript-Angular Promises:最佳做法和不同技术的优点/缺点【代码】

这个问题已经在这里有了答案: > What is the explicit promise construction antipattern and how do I avoid it? 2个我正在学习Angular,遇到了两种方法来进行返回诺言的呼叫.我想知道一种方法是否比另一种更好,和/或何时使用每种方法. 第一种技术:function getSomeDataFromServer() {var deferred = $q.defer();if (myData) {// call to backend was previously made...

javascript – 在promise.then()中分配时Angular不更新绑定【代码】

在我的角度应用程序中,我有一个带有名称的$scope变量用户. 如果我在点击时将此变量设置为“test”: < a href =“#”ng-click =“setUser()”>设置用户< / a> 与功能$scope.user = {name: 'blank' }$scope.setUser = function(name) {$scope.user.name = name }这很好用.但是,如果我在promise.then()*中设置它,它似乎正确设置变量,但Angular不会在视图中更新它,直到我在$scope.user上执行了另一个操作. < a href =“#”ng-click =“...

javascript – Angular.js resourceProvider返回带有数据的$promise【代码】

给出angular.js服务:angular.module('mymodule').factory('Products', ['$resource',function($resource) {return $resource('/path/to/getProducts', {}, {find: {method: 'GET',isArray: false}});} ]);在mymodule的控制器中,我查找查询:$scope.findAll = function () {Products.find(function (products) {console.log(Object.keys(products));// ['prodA', 'prodB', ... , '$promise', '$resolved']for (var i in products) ...

javascript – angularjs处理$resource $promise错误【代码】

如果连接到我的API时出错,有人可以帮我弄清楚如何在我的AngularJS工厂中返回硬编码数据.我的硬编码数据位于另一个名为“dataFactory”的工厂中.感谢您的帮助.service.factory("ScheduleFactory", ['$http', '$resource', '$q', 'dataFactory', function($http, $resource, $q, dataFactory) {var objFactory = {};objFactory.getDaysOfWeek = function(includeWeekends) {var days = [];var API = $resource(restURL + '/daysOfWe...

javascript – 如何使用Jasmine测试AngularJS控制器在Promise中返回的值?【代码】

我有一个控制器,它暴露了一个在休息调用后返回一些文本的函数.它工作正常,但我无法使用Jasmine进行测试.测试中的promise处理程序内的代码永远不会执行. 控制器:/* global Q */ 'use strict'; angular.module('myModule', ['some.service']).controller('MyCtrl', ['$scope', 'SomeSvc', function ($scope, SomeSvc) {$scope.getTheData = function (id) {var deferred = Q.defer();var processedResult = '';SomeSvc.getData(id)....

javascript – ngFor在Angular 2中从promise中填充的对象【代码】

我正在使用filesFromZip对象中的blobURL解析带有图像的zip文件,并使用ngFor迭代它以在页面上显示图像. 看起来像这样filesFromZip = {}; let zip = new JSZip();zip.loadAsync(zipfileFromInput).then(function (zip) {for (let file in zip.files) {let fileInZip = zip.files[file];zip.file(fileInZip.name).async("arraybuffer").then(function (content) {let buffer = new Uint8Array(content);let blob = new Blob([buffer.b...

javascript – 如何从angularjs的$q.defer()promise对象中删除回调【代码】

Angularjs $q.defer()promise对象接收通知回调,当我们给出多个时,它会保留并通知所有这些,即它不会覆盖旧版本.var def=$q.defer(); def.promise.then(null, null, callback1); def.promise.then(null, null, callback2);然后,如果我想删除(取消注册),例如,callback2,我该怎么办? 这是现场的例子: jsfiddle解决方法:快速浏览source的$q向我们展示:then: function(onFulfilled, onRejected, progressBack) {var result = new Defe...

javascript – 从promise Angular 2中设置类的全局变量【代码】

我在从一个可观察的内部分配对一个类的全局变量的响应时遇到了一个奇怪的问题.所以我的程序逻辑如下: >从弹性搜索中获取最新的播放列表ID(我使用类型定义文件中的弹性搜索).这将返回一个PromiseLike,我挂钩一个then运算符.>在承诺解决方案内,我再次进行http get调用(即可观察)>在Observable订阅中,我为我的全局数组分配来自服务器的响应. 代码工作正常,我得到的答案应该是,但我不能将变量分配给全局变量. 这是我的代码:import {C...