广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Promise抛出错误解决基础示例详解
  • 376
分享到

Promise抛出错误解决基础示例详解

Promise抛出错误解决Promise错误 2022-12-15 12:12:01 376人浏览 独家记忆
摘要

目录thencatchfinallyPromise.resolvePromise.reject then then 函数的会接收两个回调函数,一个是 onFulfilled 函数,一

then

then 函数的会接收两个回调函数,一个是 onFulfilled 函数,一个是 onRejected 函数

如果这两个回调函数没有写返回值,默认会 return undefined;

进入下一个函数的 onFulfilled 函数中

const p = new Promise((resolve, reject) => {
  resolve(22);
});
p.then(
  (success1) => {
    console.log("success1", success1); // "success2" 22
    // 没写 return 默认返回 return undefined
  },
  (err1) => {
    console.log("err1", err1);
  }
).then(
  (success2) => {
    console.log("success2", success2); // "success2" undefined
  },
  (err2) => {
    console.log("err2", err2);
  }
);

在这两个回调中 return xxx ,相当于调用 return new Promise((resolve) => resolve(xxx));

const p = new Promise((resolve, reject) => {
  resolve(22);
});
p.then(
  (success1) => {
    return new Promise((resolve, reject) => resolve("success"));
    // 等价于
    return "success";
  },
  (err1) => {
    console.log("err1", err1);
  }
).then(
  (success2) => {
    console.log("success2", success2); // "success2" "success"
  },
  (err2) => {
    console.log("err2", err2);
  }
);

onFulfilled 函数和 onRejected 函数中默认返回的都是成功,如果需要返回失败需要显示调用 reject 或者用 throw 抛出错误可以

const p = new Promise((resolve, reject) => {
  resolve(22);
});
p.then(
  (success1) => {
    return new Promise((resolve, reject) => reject("error"));
    // 等价于
    // throw "error";
  },
  (err1) => {
    console.log("err1", err1);
  }
).then(
  (success2) => {
    console.log("success2", success2);
  },
  (err2) => {
    console.log("err2", err2); // "err2" error
  }
);

总结:在 then 回调中 return xxx 会被自动包装成 return new Promise((resolve) => resolve(xxx));

catch

catch 是用来处理 rejected 状态,是 then 函数的一种特例,相当于 then(null, (err) => {});

catch 为什么能捕获前面的错误?

onRejected 函数中,如果没有显示抛出错误,默认会 return undefined; 进入一下个 onFulfilled 函数

finally

finally 不管当前 promise 是什么状态都会执行,也是 then 函数的一种特例,相当于 `then(result => result, err => new Promsie((_, reject) => reject(err)));

Promise.resolve

Promise.resolvePromisefulfilled 状态时的简写,相当于 new Promise(resolve => resolve(xxx))

onFulfilled 函数接收参数

当参数是普通参数时,会直接传递给后面 then 函数

new Promise((resolve) => resolve({ name: "uccs" })).then((data) => {
  console.log(data);
});

当参数是 Promise 对象时,后面的 then 会根据传递的 Promise 对象的状态变化执行哪一个回调

const p = new Promise((resolve, reject) => {
  setTimeout(resolve, 1000, "我执行了");
});
new Promise((resolve) => resolve(p)).then((data) => {
  console.log(data);
});

具有 then 方法的对象

const thenable = {
  then(resolve, reject) {
    console.log("thenable");
  },
};
new Promise((resolve) => resolve(thenable)).then((data) => {
  console.log(data);
});
  • 用这种这种方式,如果需要改变 Promise 状态是,不能使用 return 形式,这个 then 方法也是有两个回调函数的:onFulfilledonRejected

Promise.reject

Promise.rejectPromiserejected 状态是的简写,相当于 new Promise((_, reject) => reject(xxx))

onRejected 函数不管接收什么参数,都会原封不动的向后传递,作为后续方法的参数

以上就是Promise抛出错误解决基础示例详解的详细内容,更多关于Promise抛出错误解决的资料请关注编程网其它相关文章!

--结束END--

本文标题: Promise抛出错误解决基础示例详解

本文链接: https://www.lsjlt.com/news/174896.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Promise抛出错误解决基础示例详解
    目录thencatchfinallyPromise.resolvePromise.reject then then 函数的会接收两个回调函数,一个是 onFulfilled 函数,一...
    99+
    2022-12-15
    Promise抛出错误解决 Promise 错误
  • java基础之注解示例详解
    目录定义作用注解与注释的区别JDK内置的标准注解自定义注解@Target属性定义 注解也叫原数据,它是JDK1.5及之后版本引入的一个特性,它可以声明在类、方法、变量等前面,用来对这...
    99+
    2022-11-12
  • JavaNIO通信基础示例详解
    目录Java NIO 通信基础介绍NIO 和 OIO 的对比使用 FileChannel 完成文件复制的实践案例使用 DatagramChannel 数据包通道发送数据的实践案例使用...
    99+
    2022-12-26
    Java NIO通信基础 Java NIO
  • Java基础元注解基本原理示例详解
    目录元注解@DocumentedIDEA Documented 文档生成@Target@Retention@Inherited示例@Repeatable示例@Native元注解 是...
    99+
    2023-01-17
    Java 元注解 Java 基础原理
  • 使用PyTorch常见4个错误解决示例详解
    目录导读常见错误 #1 你没有首先尝试过拟合单个batch常见错误 #2: 忘记为网络设置 train/eval 模式常用的错误 #3: 忘记在.backward()之前进行.zer...
    99+
    2022-11-11
  • Vue使用v-for语句时抛出错误怎么解决
    本篇内容主要讲解“Vue使用v-for语句时抛出错误怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue使用v-for语句时抛出错误怎么解决”吧!Vue 中使用v-for语句抛出错误的解...
    99+
    2023-07-04
  • C及C++ 基础循环示例详解
    目录正文手动(通用)方法(迭代方法)使用循环 循环While 循环do-while 循环正文 在编程中,有时需要多次执行某些操作或(例如)n次。当我们需要重复执行一个语句块...
    99+
    2022-11-13
  • Go语言基础反射示例详解
    目录概述语法一、基本操作二、修改目标对象三、动态调用方法总结示例 概述 在程序运行期对程序动态的进行访问和修改 reflect godoc: https://golang.org/p...
    99+
    2022-11-12
  • Vue中使用v-for语句时抛出错误如何解决
    这篇文章将为大家详细讲解有关Vue中使用v-for语句时抛出错误如何解决,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Vue 中使用v-for语句抛出错误的...
    99+
    2022-10-19
  • Go语言字符串基础示例详解
    目录包含Contains(s,substr string) boolContainsAny(s, chars string) bool统计Count(s, substr string...
    99+
    2022-11-12
  • python基础pandas的drop()用法示例详解
    目录python基础pandas的drop()用法补充:python pandas 之drop()函数drop函数的使用python基础pandas的drop()用法 做数据处理得时...
    99+
    2023-05-15
    python pandas drop()用法 python pandas drop()
  • Python基础之语法错误和异常详解
    目录一、前言二、异常三、异常处理3.1 try/except3.2 try/except ... else3.3 try-finally四、抛出异常4.1 raise五、用户自定义异...
    99+
    2022-11-12
  • 使用DWR出现“例外被抛出且未被接住”错误的原因和解决办法
    “例外被抛出且未被接住”错误通常是由于以下原因导致的:1. 方法中抛出了未被捕获的异常:在使用DWR时,如果方法中抛出了未被捕获的异...
    99+
    2023-08-23
    DWR
  • JavaScript 解决ajax中parsererror错误案例详解
    解决ajax的parsererror错误的终极办法(后台传给前台的数据json问题)   出现这个问题的原因是因为后台传给前台的数据出现了问题,ajax对于json的格式特别的严格 ...
    99+
    2022-11-12
  • JavaScript解决ajax中parsererror错误案例详解
    在使用Ajax进行数据交互时,有时候会遇到"parsererror"错误。这个错误的原因通常是由于接收到的数据无法被正确地解析为JS...
    99+
    2023-08-09
    javascript
  • Java基础篇之反射机制示例详解
    目录一、什么是反射:二、反射的原理:三、反射的优缺点:四、反射的用途:五、反射机制常用的类:六、反射的基本使用:1、获得Class:主要有三种方法:2、判断是否为某个类的示例:3、创...
    99+
    2022-11-12
  • Go语言基础map用法及示例详解
    目录概述语法声明和初始化读取删除遍历总结示例 概述 map是基于key-value键值对的无序的集合 Go语言中的map是引用类型 必须初始化才能使用。 ...
    99+
    2022-11-12
  • Kotlin协程的基础与使用示例详解
    目录一.协程概述1.概念2.特点3.原理1)续体传递2)状态机二.协程基础1.协程的上下文2.协程的作用域3.协程调度器4.协程的启动模式5.协程的生命周期1)协程状态的转换2)状态...
    99+
    2022-11-13
  • React之错误边界ErrorBoundaries示例详解
    目录引言注意实现错误边界应该放置在哪?未捕获错误(Uncaught Errors)该如何处理?注意:自 React 15 的命名更改引言 过去,组件内的代码异常会导致 React 的...
    99+
    2022-11-13
    React 错误边界 React Error Boundaries
  • Go语言基础函数基本用法及示例详解
    目录概述语法函数定义一.函数参数无参数无返回有参数有返回函数值传递函数引用传递可变参数列表 无默认参数函数作为参数二、返回值多个返回值跳过返回值匿名函数匿名函数可以赋值给一个变量为函...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作