Promise的用法】的更多相关文章

首先先推荐一篇博文:http://blog.csdn.net/jasonzds/article/details/53717501 这篇博文很清晰的说明了Promise的用法,这里来简单总结一下: Promise主要用来让连续的回调变得清晰.比如: 连续获取豆瓣电影数据: $.get("https://api.douban.com/v2/movie/top250?count=5",function (data) { console.log(data); $.get("https…
Promise 的定义 Pormise是JS的异步编程的一种解决方案,在ES6将其写进了语言标准,提供了原生的Promise对象. Promise简单来理解就是一个容器,里面存放着某个未来才会结束的事件结果.Promise是一个对象,从它可以获取异步操作的消息,Promise提供了统一的API,各种异步操作都可以用同样的方法进行处理. Promise有下面两个特点: 对象的状态不受外界影响.有三种状态:padding(进行中).fulfilled(成功).rejected(失败).只有异步操作的…
Promise解决的问题相信每个前端都遇到过这样一个问题,当一个异步任务的执行需要依赖另一个异步任务的结果时,我们一般会将两个异步任务嵌套起来,这种情况发生一两次还可以忍,但是发生很多次之后,就形成了所谓的回调地狱,代码层层嵌套,环环相扣,很明显,逻辑稍微复杂一些,这样的程序就会变得难以维护.就比如我们昨天的那个回调地狱的例子: function funA(callback) { console.log("A"); setTimeout(() = > { callback() }…
前沿:  Promise在处理异步操作非常有用.项目中,与后端进行数据请求的时候经常要用到Promise.我们可以用promise + xhr进行ajax的封装.也可以使用基于promise封装的请求方法(fetch)或者类库(axios)去跟服务器进行交互.当使用fethch或者axios的时候,常常需要对数据请求方法进行二次封装.这就要求我们能够理解并掌握promise的用法. Promise知识要点: 1.首先区分Promise构造函数和promise对象的概念. 通过Promise构造函…
关于promise我在之前的文章已经应用过好几次,如[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist,本文就来讲解下promise的常见用法. 为什么会有promise,他的作用是什么? promise主要是为了解决js中多个异步回调难以维护和控制的问题. 什么是promise? 从图中,我们可以看出,Promise是一个函数,这个函数上有在项目中常用的静态方法:all, race, reject,resolve等,原…
promise.then().promise.catch().Promise.all()... Promise 构造函数接受一个函数作为参数,该函数的2个参数分别是 resolve 和 reject.他们是2个函数,有 JavaScript 引擎提供,不用自己部署. var promise = new Promise ( function ( resolve, reject) { if ( /* 异步操作成功 */ ) { resolve (value) } else { reject (err…
Promise 对象用于一个异步操作的最终完成(或失败)及其结果值的表示.简单点说,它就是用于处理异步操作的,异步处理成功了就执行成功的操作,异步处理失败了就捕获错误或者停止后续操作. 它的一般表示形式为: new Promise( /* executor */ function(resolve, reject) { if (/* success */) { // ...执行代码 resolve(); } else { /* fail */ // ...执行代码 reject(); } } );…
总结:Promise函数的出现极大的解决了Js中的异步调用代码逻辑编写太过复杂的问题,Promise对象让异步调用函数的流程显得更加的优雅,也更容易编写. 举例: 1. 异步调用: 假设现在我的一个页面中的一条数据需要我去后台查询两个接口才能完全返回,废话不说下面上代码: function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码…
new Promise(function(resolve,reject){ resolve(); //数据处理完成 reject(); //数据处理出错 }).then(function A(){ //成功下一步 },function B(){ //出错做对应处理 }): Promise 三个状态:(每一个then都会返回新的一个Promise实例) pending //待定 初始状态 fulfilled //实现 操作成功 rejected //否决 操作失败 ----------------…
Node的产生,大大推动了Javascript这门语言在服务端的发展,使得前端人员可以以很低的门槛转向后端开发. 当然,这并不代表迸发成了全栈.全栈的技能很集中,绝不仅仅是前端会写一些HTML和一些交互,后台熟悉数据库的增删查改. 想必接触过Node的人都知道,Node是以异步(Async)回调著称的,其异步性提高了程序的执行效率,但同时也减少了程序的可读性.如果我们有几个异步操作,并且后一个操作需要前一个操作返回的数据才能执行,这样按照Node的一般执行规律,要实现有序的异步操作,通常是一层加…
回调是不需要return 就可以传递数据.缺点就是嵌套多了就成了回调地狱 回调的另外一个问题拿不准应该怎么去传这个参数.以为node.js为例.nodejs有个readFile去读取文件,读取成功就用一个回调,读取失败再来一个回调.每个回调里面,可能还有回调. 这就是第二个问题,不知道应该去传这个回调. nodejs下面,通过error参数为空 表示成功,否则为失败.这是nodejs的方式. 例如前端的jquery调用ajax nodejs这样使用回调,只用传这样一个函数,这个函数的第一个参数是…
/** * Created by liyinghao on 2016/11/6. */ const fs = require('fs'); /* * 新建一个Promise对象,Promise就是一个容器,里面放置一个异步执行的API * */ const p1 = new Promise((resolve, reject)=>{ fs.readFile('./a.txt','utf8',(err,data)=>{ if(err){ /* * 容器中异步任务失败之后调用reject方法,把错误…
promise是一个对象,里面保存着某个未来才会结束的事件,通常是一个异步事件. promise对象的两个特点: 1.对象的状态不受外界影响:pending(进行中) fulfilled(已成功) rejected(已失败) 只有异步操作的结果可以决定当前状态,其他任何操作都无法改变这个状态 2.一旦状态改变发,就不会再变resolved(已定型),任何时候都可以得到这个结果. 状态改变只有两种可能: pending ==> fulfilled pending ==> rejectedprom…
Promise(onsuccess , on fail) f1.then(f2.then(), f3.then()) java CompletableFuture.thenAccept…
Promise.all([ 需要异步一起执行的方法---------先做的事 ]).then(res=>{ 后做的事(先做的事已经做好了) }) 举栗子: Promise.all([ this.aaa() this.bbb() ]).then((res)=>{ this.ccc() });…
初学 WinJS, 可能对 Promise 的用法不大清楚,本文简要说明一下 WinJS中 promise 的基本用法. 主要参考自:http://try.buildwinjs.com/#promises Promise是 WinJS中实现异步模式编程的实现形式, 它其实更多的是一种规范,用来规范和简化 javascript 中的异步编程. 在promise被提出来之前,javascript中的异步编程通常是直接使用回调来完成的. 1 2 3 4 5 6 7 var getParentList…
多线程 等待一次性事件 std::promise用法 背景:不是很明白,不知道为了解决什么业务场景,感觉std::async可以优雅的搞定一切的一次等待性事件,为什么还有个std::promise. 用法:和std::async一样,也能够返回std::future,通过调用get_future方法.也可以通过future得到线程的返回值. 特点: 1,是个模板类,模板类型是个方法类型,比如double(int),有一个参数,类型是int,返回值类型是double. std::promise<i…
众所周知的,Javascript是一种单线程的语言,所有的代码必须按照所谓的“自上而下”的顺序来执行.本特性带来的问题就是,一些将来的.未知的操作,必须异步实现.本文将讨论一个比较常见的异步解决方案——Promise,时至本文最后更新的日子,Promise的应用已经极其广泛. Promise解决的问题 我相信每个前端都遇到过这样一个问题,当一个异步任务的执行需要依赖另一个异步任务的结果时,我们一般会将两个异步任务嵌套起来,这种情况发生一两次还可以忍,但是发生很多次之后,你的代码就会变成这个熊样:…
axios它是基于promise的http库,可运行在浏览器端和node.js中,然后作者尤雨溪也是果断放弃了对其官方库vue-resource的维护,直接推荐axios库,小编我也是从vue-resource转换过来的,差别说不来,我们讲一下axios在实际开发中的用法 如何在 Vue.js 中使用第三方库 axios特点 1.从浏览器中创建 XMLHttpRequests2.从 node.js 创建 http 请求3.支持 Promise API4.拦截请求和响应 (就是有intercept…
今天我们要讲的ng2的service这个概念,和ng1一样,service通常用于发送http请求,但其实你可以在里面封装任何你想封装的方法,有时候控制器之间的通讯也是依靠service来完成的,让我们一睹为快! 例子 例子是官方的例子,加载一个英雄列表,点击显示详细信息.我直接放在我们的升级后的装备里面.…
下面这种promise的用法,我从第一篇$http笔记到$resource笔记中,一直都有用到: HttpREST.factory('cardResource',function($resource){ return $resource('/card/user/:userID/:id',{userID:123,id:'@id'},{charge:{method:'POST',params:{charge:true},isArray:false}}) }); HttpREST.factory('h…
上一篇我们讲解了ES6中Promise的用法,但是知道了用法还远远不够,作为一名专业的前端工程师,还必须通晓原理.所以,为了补全我们关于Promise的知识树,有必要理解Promise/A+规范,理解了它你才能知道Promise内部是怎么回事,我们ES6中的Promise是如何一路走来的.   网上关于Promise/A+的翻译文档很多,所以我就不翻译一次了,本篇的目的在于为文档增加一些标注,以帮助我们更好的理解.翻译内容引用自:http://malcolmyu.github.io/malnot…
1.Promise介绍 Promise最早是社区提出和实现,后面ES6将其写入标准,并原生提供Promise对象,是一种异步编程的解决方案,具体的概念大家可以去查看相关的资料.传统上处理异步都是以callback回调函数的方式完成,但是当回调嵌套的太多,便会使程序很难理解,如下所示 function a(cb){ console.log('a...'); cb('a'); } function b(cb){ console.log('b...'); cb('b'); } function c(c…
少年别激动 我的这份随笔里面只涉及promise概念 如果想深入了解Promise的用法 可以去阮老师es6入门里面详读 奉上链接 http://es6.ruanyifeng.com/#docs/promise 我的这份笔记很短 只是简单的介绍了下什么是Promise 什么是Promise呢 肯定会有和我一样的童鞋说 promise是承诺 对它的英文名的确是承诺 但它原本可不是这样的 原本翻译为普罗米修斯 好像是一位天神 神又是什么呢 神可以预知未来啊!!! 那我理解成Promise就是神就是可…
同步编程通常来说易于调试和维护,然而,异步编程通常能获得更好的性能和更大的灵活性.异步的最大特点是无需等待."Promises"渐渐成为JavaScript里最重要的一部分,大量的新API都开始promise原理实现.下面让我们看一下什么是promise,以及它的API和用法! Promises现状 XMLHttpRequest API是异步的,但它没有使用promise API.但有很多原生的 javascript API 使用了promise: Battery API fetch…
Promise原理 参考https://github.com/chunpu/promise/blob/master/promise.js 个人认为原博的实现有点问题 在next函数的实现上, 会导致无限的调用 看看一般Promise的用法 promise = new Promise(function(resolve, reject) { //... resolve(1); //... }) .then(function(val){}, functioin(err){}) .then(functi…
最近在看<你不知道的javascript中卷>,发觉作者花了基本一半的篇幅去讲异步和promise,觉得有必要总结一下. 其实本文的目的是想手写一个Promise的,无奈总结着总结着发觉篇幅有点长,因此只好一分为二,先介绍promise的用法,知道怎么用,我们才知道怎么写,所以把手写一个promise的任务放到了下一篇文章当中. 当然,网上有很多关于promise的文章,都可以参考参考,有误之处,欢迎之处. 什么是Prmoise promise是ES6新增的一个特征,它已被列入ES6的正式规范…
原文地址:JavaScript Promise API 在 JavaScript 中,同步的代码更容易书写和 debug,但是有时候出于性能考虑,我们会写一些异步的代码(代替同步代码).思考这样一个场景,同时触发几个异步请求,当所有请求到位时我们需要触发一个回调,怎么做?Promise 让一切变的简单,越来越多的原生 API 基于 Promise 去实现.那么,什么是 Promise?Promise API 如何使用? 基于 Promise 的 原生 API Promise 主要是为了解决异步的…
到处是回调函数,代码非常臃肿难看, Promise 主要用来解决这种编程方式, 将某些代码封装于内部. Promise 直译为"承诺",但一般直接称为 Promise; 代码的可读性非常重要,因为开发人员支出一般比计算机硬件的支出要大很多倍. 虽然同步代码更容易跟踪和调试, 但异步方式却具有更好的性能与灵活性. 怎样在同一时刻发起多个请求, 然后分别处理响应结果? Promise 现已成为 JavaScript 中非常重要的一个组成部分, 很多新的API都以 promise 的方式来实…
最近在看<你不知道的javascript中卷>,发觉作者花了基本一半的篇幅去讲异步和promise,觉得有必要总结一下. 其实本文的目的是想手写一个Promise的,无奈总结着总结着发觉篇幅有点长,因此只好一分为二,先介绍promise的用法,知道怎么用,我们才知道怎么写,所以把手写一个promise的任务放到了下一篇文章当中. 当然,网上有很多关于promise的文章,都可以参考参考,有误之处,欢迎之处. 回到顶部 什么是Prmoise promise是ES6新增的一个特征,它已被列入ES6…