YJKJpromise

promise:用来处理异步操作,不会阻塞和等待长时间操作完成。采用异步编程不会影响整个页面和用户的交互,脱离回调模式,promise是基于状态的,解决回调地狱问题。


promise接收函数作为参数,函数里有两个参数 resolve和reject,我们用promise时,一般是封装在一个函数中,在需要的时候去调用这个函数。


promise是一个构造函数,本身有all、reject、resolve等方法,原型上有 then、catch等方法。


JS中输出一个未定义的变量时,正常情况下不会往下执行,但在promise中会进入catch方法,catch方法中有回调函数,把错误原因传入函数的reson参数中,与js中的tyr、catch相似。


promise.all提供了并行执行异步操作的能力,并且在异步操作执行完后才执行回调。all接收一个数组参数,数组对象都是promise对象,等所有的执行完才进入then,所有的数据都会在then里。使用场景: 预先加载到各种资源时,等加载完再进行页面初始化。


promise.race方法和all相反,但也接收一组参数,参数都是promise对象,race里的参数会赛跑, 谁快谁赢。使用场景:给异步请求设置超时时间,并在超时后执行相应操作。


(1)对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved(已完成,又称 Fulfilled)和Rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。

(2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从Pending变为Resolved和从Pending变为Rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。如果改变已经发生了,就算你再对Promise对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。


resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从Pending变为Resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”(即从Pending变为Rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。

resolve状态下 throw抛出错误无效。


JS是单线程的,回调函数会造成回调地狱,所以就出现了同步的方式写异步,promise(es6)、async/wait(ES7)、generator、web worker


JQ的deffered、angular中的$q、ng-route、ui-router都属于promise范畴。


避免promise吞掉错误,总是将链条以catch结尾。


web worker允许JS创建多个线程,但子线程完全受主线程控制,且不得操作DOM。

web worker中的API:postMesage()、terminate()、message()、error()

Generator 函数是协程在 ES6 的实现,最大特点就是可以交出函数的执行权(即暂停执行)。


参考网址:http://es6.ruanyifeng.com/#docs/promise(阮一峰ES6promise)

                    http://www.ruanyifeng.com/blog/2015/04/generator.html(generator函数的含义和用法)

                   http://www.cnblogs.com/lvdabao/p/es6-promise-1.html(大白话讲解Promise)

                   http://www.cnblogs.com/whitewolf/archive/2015/10/22/4902570.html(promise的前世今生)

                 





资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在 Python 编程里,判断正整数是否为素数是基础任务。素数是除 1 和自身外无其他正因数的自然数。下面探讨用 Python 实现此功能,及如何拓展至判断“循环素数”。 先定义一个名为 isPrime 的函数,接收正整数 n 作参数,实现如下: 该函数先判断小于 2 的数(非素数),接着判断 2(唯一偶数素数),最后针对大于 2 的数,从 2 到其平方根的整数依次遍历,若有因子,就判定不是素数。 接着说“循环素数”。它是特殊素数,各位数字循环位移后形成的数仍为素数,像 1373 就是循环素数,因为 137、371、713 都是素数。要判断一个数是否为循环素数,可遍历其所有可能位移,将其转为字符串,重新排列再转回整数,用 isPrime 函数检验。实现代码如下: 此代码循环遍历每个位移,每次位移后用 isPrime 函数检查新数是否为素数,一旦发现非素数,立即结束循环并输出结果。若循环结束标志位仍为 True,说明输入数是循环素数。 在 Python 中,常用 math 模块处理数学计算,如 math.sqrt() 求平方根,math.ceil() 向上取整。而 string 模块虽可用于整数与字符串转换,但此代码中直接用 int() 和 str() 转换即可,无需导入 string 模块。 掌握这些 Python 编程技巧,能有效判断正整数是否为素数及循环素数,有助于理解 Python 数据类型操作、控制流程和数学计算,还能助力开发复杂算法,解决复杂数学问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值