JS 提示调用成功or错误的几种方式(Promise、try-catch、success-fail)

1. Promise

Promise的诞生是为了解决“回调地狱”。
回调地狱:当多个回调函数一直往里嵌套的时候(外层的回调结果是内层的参数),观看代码的体验就会非常差劲,这就是所谓的回调地狱。

而为了解决这个问题,promise应运而生,它存在的目的就是能够更加优雅地书写复杂的异步任务<回调是一种异步>。

//原函数
function promiseTest(){
    let p=new Promise(function(resolve,reject){
        if(解决) resolve("结果数据(res)")
        if(拒绝) reject("错误信息(err)")
    })
    return p;
}

//调用
promiseTest()
.then((res)=>{ 兑现承诺 })
.catch((err)=>{ 拒绝承诺 })

2. try-catch

<任何代码块都能使用,且能判断错误的范围较大>
能用来判断try内的代码是否有错,但是它的好处就是,出错了之后会执行catch内的代码,而不会中断整个程序,代码依然能够向后运行。

try {
    这里写的代码执行时没有任何问题 
} 
catch (err) {
    //如果上方try里的内容在执行时出错
    console.error("出错", err);
}

3. success(res){ }, fail(err){ }

!它需要原函数本身带有这几个参数才能使用

executeFunction({
    success(res) {
        console.log('调用成功', res);
    },
    fail(err) {
        console.error('调用失败:', err);
    }
})

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 什么是promisePromise是一种异步编程的解决方案,它是ES6新增的特性,用于解决回调地狱的问题。Promise代表一个异步操作的最终完成状态(成功或失败)以及返回的结果值。 2. 怎么使用promise? 使用Promise需要以下几个步骤: (1)创建Promise对象,将异步任务封装在Promise对象。 (2)使用then方法处理成功状态的结果。 (3)使用catch方法处理失败状态的结果。 例如: ```javascript let promise = new Promise(function(resolve, reject) { setTimeout(() => { if (Math.random() < 0.5) { resolve('success'); } else { reject('fail'); } }, 1000); }); promise.then(function(result) { console.log(result); // 'success' }).catch(function(error) { console.log(error); // 'fail' }); ``` 3. 怎么手写promise? 手写Promise需要实现以下几个步骤: (1)创建Promise类,定义构造函数,初始化Promise状态。 (2)定义resolve方法和reject方法,分别用于改变Promise状态为成功和失败。 (3)定义then方法和catch方法,分别用于处理成功状态和失败状态。 (4)实现链式调用,即then方法可以无限调用。 例如: ```javascript class MyPromise { constructor(executor) { this.status = 'pending'; this.value = undefined; this.reason = undefined; let resolve = (value) => { if (this.status === 'pending') { this.status = 'fulfilled'; this.value = value; } }; let reject = (reason) => { if (this.status === 'pending') { this.status = 'rejected'; this.reason = reason; } }; try { executor(resolve, reject); } catch (error) { reject(error); } } then(onFulfilled, onRejected) { if (this.status === 'fulfilled') { onFulfilled(this.value); } else if (this.status === 'rejected') { onRejected(this.reason); } return this; } catch(onRejected) { if (this.status === 'rejected') { onRejected(this.reason); } return this; } } ``` 使用手写的Promise: ```javascript let promise = new MyPromise(function(resolve, reject) { setTimeout(() => { if (Math.random() < 0.5) { resolve('success'); } else { reject('fail'); } }, 1000); }); promise.then(function(result) { console.log(result); // 'success' }).catch(function(error) { console.log(error); // 'fail' }); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值