【无标题】js promise then(),catch()


前言

本文是自己在学习promise中的小总结,可能写的不是很好,但希望对大家有些帮助,参考资料来自B站的up主:https://www.bilibili.com/video/BV1454y1R7vj?p=1

自己在学习中也遇到了个小bug
Uncaught ReferenceError: promise is not defined
我还找了很久,还以为需要导包问题
这里就是P需要大写的。希望能帮到大家。
不过我想没我这么笨的人了吧。

一、promise

1.promise的基本使用

语法

new Promise((resolve,reject)=>{})
  • Promise 接受一个函数作为参数
  • 在参数函数中接受2个参数
  • -resolve (成功的)
  • -reject (失败的)

promise实列

具有2个属性

  • state:状态
  • result: 结果

(1)promise的状态
第一种状态:pending(准备,待解决,进行中)
第二种状态:fulfilled(已完成,成功)
第三种状态:rejected(已拒绝,失败)
(2)promise状态的改变
通过调用resolve()和reject()改变当前promise对象的状态

  • resolve():调用函数,使当前promise对象的状态改为fulfilled (成功)
  • reject() :调用函数,使当前promise对象的状态改成rejected (失败)

2.promise方法的使用

1.then() 方法

const p =new Promise((resolve,reject)=>{

})

p.then(()=>{
//当promise的状态为fulfilled时执行
console.log('执行成功')
},
()=>{
//当promise的状态为rejected时执行
console.log('执行失败')

})

参数:一个是函数,另一个还是函数

  1. 当状态为fulfilled时,执行第一个函数(成功函数)

  2. 当状态为rejected时,执行第二个函数 (失败函数)

  3. 在then方法的参数函数中,通过形参使用promise对象的结果

  4. then()的返回值为依然是一个promise对象,此刻的状态为pending

  5. 如果promise中的状态不改变,则then不执行

  6. 在then方法中,通过return将返回值,promise实例改为fulfilled状态

  7. 在then方法中,出现代码错误,则会将返回的promise实例改为rejiected状态

2.catch() 方法

const p =new Promise((resolve,reject)=>{
    //reject()
    //console.log(a) 此时a为定义,则报错
    throw new Error('出错了')
})

p.catch((reason)=>{
    console.log('失败',reason)
})

  • 当promise的状态改为rejected时,被执行
  • 当promise 执行体中出现代码错误时,被执行

小总结

then方法里面的第二个函数和catch 类似,所以大多都是then.().catch()结合使用

new Promise((resolve,reject)=>{
  
}).then((value)=>{
    //成功时被执行
    console.log(value)

}).catch((reason)=>{
    //失败时被执行
    console.log(reason)
})

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 JavaScript 中,Promisecatch 方法用于捕获并处理 Promise 对象抛出的错误。 使用方法如下: ``` promise.catch(function(error) { // 处理错误的代码 }); ``` 也可以使用箭头函数的写法: ``` promise.catch(error => { // 处理错误的代码 }); ``` 当 Promise 对象抛出错误时,会执行 catch 方法中的代码。你可以在 catch 方法中进行错误处理,例如输出错误信息、显示错误提示等。 举个例子: ``` const promise = new Promise((resolve, reject) => { // 使用 setTimeout 模拟异步操作 setTimeout(() => { const randomNumber = Math.random(); if (randomNumber > 0.5) { resolve(randomNumber); } else { reject(new Error('randomNumber is too small')); } }, 1000); }); promise .then(result => { console.log(`result: ${result}`); }) .catch(error => { console.error(error.message); }); ``` 在上面的代码中,我们使用了 Promise 对象来模拟异步操作。如果随机数大于 0.5,则调用 resolve 方法;否则调用 reject 方法,并传入一个错误对象。然后使用 then 方法和 catch 方法来处理 Promise 对象的成功和失败。 ### 回答2: 在JavaScript中,Promisecatch()方法用于捕捉异步操作的错误,以便进行错误处理。它是Promise的原型方法,需要在Promise链中使用。 使用catch()的基本语法如下: ``` promise.catch(function(error) { // 错误处理逻辑 }); ``` 在catch()方法中,我们可以传入一个回调函数来处理捕获到的错误。当Promise链中的任何一个Promise被拒绝时,catch()方法将会被调用,并将错误信息作为参数传递给回调函数。该回调函数可以根据错误类型和原因执行相应的错误处理逻辑。 例如,下面是一个使用catch()方法来处理Promise链中的错误的示例: ```javascript function asyncOperation() { return new Promise(function(resolve, reject) { // 异步操作 setTimeout(function() { reject(new Error("异步操作失败")); // 模拟异步操作的错误 }, 1000); }); } asyncOperation() .then(function(result) { // 异步操作成功的处理逻辑 }) .catch(function(error) { // 异步操作失败的处理逻辑 console.log(error.message); // 输出错误信息 }); ``` 在上面的示例中,我们使用catch()方法来捕捉Promise链中的错误。当异步操作失败时,reject()方法将会将错误信息传递给catch()方法,并将其作为参数传递给回调函数。在这个回调函数中,我们可以通过error对象的message属性来获取错误信息,并进行相应的处理。 总之,使用JavaScript中的Promisecatch()方法可以很方便地捕获异步操作中的错误,并进行相应的处理。 ### 回答3: 在JavaScript中,Promise是一种用于处理异步操作的对象。catch方法是Promise对象的方法之一,用于捕获Promise链中发生的错误并进行处理。 在使用Promise时,可以通过then方法来注册成功时的回调函数,而catch方法则用于注册错误时的回调函数。当Promise链中的操作发生错误时,会直接跳到最近的catch方法,并执行其回调函数。 catch方法通常紧跟在then方法后面,并且可以多次使用来捕获不同的错误。例如: ```javascript function someAsyncFunction() { return new Promise((resolve, reject) => { // 异步操作 if (someCondition) { resolve(result); } else { reject(error); } }); } someAsyncFunction() .then((result) => { // 处理成功时的结果 }) .catch((error) => { // 处理发生的错误 }); ``` 在上面的示例中,someAsyncFunction是一个返回Promise对象的异步函数。在then方法中,可以处理异步操作成功时的结果,而在catch方法中,可以处理发生的错误。 除了处理错误外,catch方法也可以用来处理Promise链中的已处理但仍然希望拦截的错误。例如: ```javascript someAsyncFunction() .then((result) => { // 处理成功时的结果 }) .catch((error) => { // 处理发生的错误 }) .catch((error) => { // 处理上一个catch方法中未处理的错误 }); ``` 在上面的示例中,第一个catch方法捕获了错误并进行处理,而第二个catch方法则处理第一个catch方法中未处理的错误。 总而言之,catch方法用于处理Promise链中发生的错误。通过使用catch方法,可以更好地控制和处理异步操作中的错误情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值