Promise语法和回调函数基本格式

一、回调函数

案例一

function add(a,b,callback) {

  var total = a+b;

  if(typeof(a)=='number'){
    callback&callback(total)//if callback{callback(total)}短路运算符
  }else (
      callback("不是数字")
  )
}

add(1,2,function (tt) {
  console.log(tt);
})

add("fd",2,function (tt) {
  console.log(tt);
})

callback&callback()是短路运算符,只有前面为true才执行后面 

案例二 


// 1. 如果函数需要回调参数,一定是在参数的最后出现
// function getFileAsync(path, callback){
//   if(错误){
//     callback(new Error('xxx 错误'));
//   }else{
//     callback(null, data);
//   }
// }

// 2. 错误优先的回调函数
function isEvenOrOdd(number, callback){
  if(typeof number ==='number'){
    if(number % 2){
      // 奇数
      callback(null, '当前传入的是奇数');
    } else{
      callback(null, '当前传入的是偶数');
    }
  }else{
    throw new Error('你传入的不是数字');
    callback(new Error('你传入的不是数字'));
  }
}

// 约定将错误信息作为回调的第一个参数
isEvenOrOdd(10, (error,data)=>{
  if(error) throw error;
  console.log(data);
});


isEvenOrOdd(11, (error,data)=>{
  if(error) throw error;
  console.log(data);
});

isEvenOrOdd('asda', (error,data)=>{
  if(error) throw error;
  console.log(data);
});

二、Promise写法 

在Promise中可以通过.then的第二个参数获取reject(),也可以通过.catch获取

案例一

function add2(a, b) {
  var total = a + b;
  return new Promise(function (resove, reject) {

    if (typeof(a) == 'number') {
      resove(total)
    } else {
      reject("不是数字")
    }

  })
}

//通过.catch获取错误
add2("fdf",2).then(function (tt) {
  console.log(tt);
}).catch(function (tt) {
  console.log(tt);
})

//连续调用中的错误获取,通过.then的第二个参数获取
add2(3, 2)
    .then((t1) => {
      console.log(t1);
      return add2("fd", 3)
    }, (t2) => {
      console.log(t2);
      return add2("fd", 3)
    })
    .then((c1) => {
      console.log(c1);
    }, (c2) => {
      console.log(c2);
    })

案例二Ajax的Promise用法

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值