javascript中的糖衣语法Promise对象怎么使用


这篇文章主要讲解了“javascript中的糖衣语法Promise对象怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript中的糖衣语法Promise对象怎么使用”吧!最初javascript的异步实现就是使用回调函数。回调地狱就是:一个函数需要等它的回调函数(或者回调和回调的回调…)执行完毕之后再执行。简单来说,回调函数里面嵌套回调函数。而因为回调地狱的问题,Promise就出现了。我们看看什么是回调地狱:可看出回调地狱的特点:1.难以复用
2.堆栈信息被断开
3.借助外层变量回调地狱是为了让我们代码执行顺序的一种操作(解决异步),但是它会使我们的可读性非常差。当你有100个,1000个…,代码会不断右移,不够优雅,也会影响性能。嵌套和缩进只是回调地狱的一个梗而已,它导致的问题远非嵌套导致的可读性降低而已。接下里我们今天的目的,就是将上面的回调地狱用Promise解决。Promise的基本语法:Promise函数接收一个函数作为参数,这个函数有两个参数,一个是成功函数(resolve),一个是失败函数(reject)。Promise的.then接收两个回调函数,一个是成功函数的回调,一个是失败函数的回调。这两个函数可选,不一定要提供特别注意:(1)Promise对象中的状态不会被外界干扰。状态的改变取决于异步的操作结果。(2)Promise对象的状态一旦被改变,就不会进行再次改变。 例如:(3)Promise新建后就会立即执行,Promise后面的.then是一个异步操作,在事件循环中叫做“微任务”。会放在同步代码后面执行。 例如:then方法的返回结果是新的Promise实例,对象状态由回调函数的执行结果决定。then方法后面还可以再调用另一个then方法,形成链条。采用链式的then,可以指定一组按照次序调用的回调函数。catch()用于指定发生错误时的回调函数.例如:建议总是使用catch()方法,而不使用then()方法的第二个参数.catch()还可以这样使用:finally()方法用于指定不管 Promise 对象最后状态如何,都会执行的操作。而且finally方法总是会返回原来的值。举个例子:将现有对象转为 Promise 对象,状态为resolved。举例如下:也会返回一个新的 Promise 实例,该实例的状态为rejected。简单举例:all()是将多个 Promise 实例,包装成一个新的 Promise 实例。接收一个数组作为参数,数组的每一项都是Promise对象的实例。如果不是,会通过Promise.resolve()将参数转为Promise实例,再进行处理免费云主机域名all()用于将多个 Promise 实例,包装成一个新的 Promise 实例。race()是将多个 Promise 实例,包装成一个新的 Promise 实例。接收一个数组作为参数,数组的每一项都是Promise对象的实例。如果不是,会通过promise.resolve()将参数转为Promise实例,再进行处理。只要参数的Promise实例有一个率先改变状态,则状态改变。例如:简要说一下const p1=Promise.all([promise1,promise2,promise3]) 和const p2=Promise.race([promise1,promise2,promise3])的区别:–前者Promise的实例状态都为resolved时,p1调用.then()里面成功时的回调函数;如果实例状态有一个为rejected,p1调用.then()里面失败时的函数或者走.catch()–后者注重时序,如果率先改变状态的实例为resolved,则p2为reslove状态;否则,为reject状态。1.无法取消Promise,一旦新建它就会立即执行,无法中途取消2.如果不设置回调函数,Promise内部抛出的错误,不会反映到外部3.当处于pending状态时,无法得知目前进展到哪一个阶段,是刚刚开始还是即将完成感谢各位的阅读,以上就是“javascript中的糖衣语法Promise对象怎么使用”的内容了,经过本文的学习后,相信大家对javascript中的糖衣语法Promise对象怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是百云主机,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: go语言怎么启动web服务

这篇文章主要介绍“go语言怎么启动web服务”,在日常操作中,相信很多人在go语言怎么启动web服务问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”go语言怎么启动web服务”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!总的来…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/22 10:17
下一篇 03/22 10:18

相关推荐