Promise基础知识

一、何为promise,我们为何要使用它?

由于JavaScript语言特性,所有程序都是单线程执行的。由于这个特性,JavaScript的一些浏览器事件、请求事件都是异步执行的,通过回调函数处理异步的结果。这是很常见的语法,但是在一些场景下,就会形成回调函数嵌套回调函数,有的情况甚至套用多层,形成了“回调地狱”,这样使得代码臃肿可读性差而且难以维护。

<!--一个地狱回调的例子,上一个函数的回调结果被下一个函数所依赖-->
const verifyUser = function(username, password, callback){
   require.verifyUser(username, password, (error, userInfo) => {
       if (error) {
           callback(error)
       }else{
           require.getRoles(userInfo, (error, roles) => {
               if (error){
                   callback(error)
               }else {
                   require.logAccess(roles, (error) => {
                       if (error){
                           callback(error);
                       }else{
                           callback(null, userInfo, roles);
                       }
                   })
               }
           })
       }
   })
}
复制代码

为了解决这种问题,社区提出了一些解决方案,采用链式调用的方法,来解决异步回调,并在在ES6被统一成规范。可以说Promise 是异步编程的一种解决方案。

二、Promise的基本用法

基本用法

作为新的规范,promise采用更加直观也更加易读的方式解决回调嵌套。ES6规定,promise对象是一个构造函数,通过new关键字来生成实例。下面是promise的基本用法

 <!--promise的基本用法-->
 const promise = new Promise((resolve, reject) => {
  // 异步操作的代码
  if (success){
    resolve(value);
  } else {
    reject(error);
  }
});
复制代码

Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject,他们是JavaScript引擎提供的两个函数。异步操作有两种结果:成功或失败

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值