首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有了承诺之后,没完成,需要处理

它可能出现在一个或几个 .then。 或者,可能站点一切正常,但响应不是有效JSON。...但是,如果上面的任何一个 Promise 被拒绝(网络问题或无效json或其他什么),那么它就会捕获它。...“看不见try..catch,执行程序会自动捕获错误并将其转换为被拒绝Promise。 这不仅发生在executor函数中,也发生在其处理程序中。...如果我们抛出一个.then处理程序,这意味着一个拒绝承诺,因此控件跳转到最近错误处理程序。...在出现错误情况下,承诺被拒绝,执行应该跳转到最近拒绝处理程序。但是没有。所以错误被“卡住”了。没有代码来处理它。 在实践中,就像代码中常规未处理错误一样,这意味着某些东西出现了严重错误。

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

带你理解 Asyncawait

它可以被放置在任何函数前面,像下面这样: async function f() { return 1; } 在函数前面的「async」这个单词表达了一个简单事情:即这个函数总是返回一个 promise...// 1 所以说,async 确保了函数返回值是一个 promise,也会包装非 promise 值。...但是如果 promise 被拒绝,就会抛出一个错误,就像在那一行有个 throw 语句那样。...// f() 变为一个拒绝 promise f().catch(alert); // TypeError: failed to fetch // (*) 如果我们忘了添加 .catch,我们就会得到一个未处理...这通常更加方便(当然不是绝对)。 但是当我们在顶层代码,外面并没有任何 async 函数,我们在语法上就不能使用 await 了,所以这时候就可以用 .then/catch 来处理结果和异常。

1.1K10

ES6 系列之我们来聊聊 Promise

现在要找出一个目录中最大文件,处理步骤应该是: 用 fs.readdir 获取目录中文件列表; 循环遍历文件,使用 fs.stat 获取文件信息 比较找出最大文件; 以最大文件文件名为参数调用回调...可是异步回调函数并非如此,比如执行 fs.readdir 时候,其实是将回调函数加入任务队列中,代码继续执行,直至主线程完成后,才会从任务队列中选择已经完成任务,并将其加入栈中,此时栈中只有这一个执行上下文...Promise 构造,结果会得到一个立刻跑出异常,而不是一个拒绝 Promise。...其实这并不是 Promise 独有的局限性,try..catch 也是这样,同样会捕获一个异常并简单吃掉错误。...单一值 Promise 只能有一个完成值或一个拒绝原因,然而在真实使用时候,往往需要传递多个值,一般做法都是构造一个对象或数组,然后再传递,then 中获得这个值后,又会进行取值赋值操作,每次封装和解封都无疑让代码变得笨重

61730

ES6 系列之异步处理实战

作者:冴羽 ,原文:https://github.com/mqyqingfeng/Blog/issues/101 前言 我们以查找指定目录下最大文件为例,感受从 回调函数 -> Promise ->...API 介绍 为了实现这个功能,我们需要用到几个 Nodejs API,所以我们来简单介绍一下。 fs.readdir readdir 方法用于读取目录,返回一个包含文件和目录数组。...fs.stat stat 方法参数是一个文件或目录,它产生一个对象,该对象包含了该文件或目录具体信息。此外,该对象还有一个 isFile() 方法可以判断正在处理到底是一个文件,还是一个目录。...思路分析 我们基本实现思路就是: 用 fs.readdir 获取指定目录内容信息 循环遍历内容信息,使用 fs.stat 获取该文件或者目录具体信息 将具体信息储存起来 当全部储存起来后,筛选其中是文件信息...回调函数 var fs = require('fs'); var path = require('path'); function findLargest(dir, cb) { // 读取目录下所有文件

33820

单细胞去除批次效应软件比较

不同平台数据、同一平台不同时期数据、同一个样品不同试剂数据、同一个样品不同时间数据、同一个样本不同设备数据等都会产生批次效应。...三个数据集包括:细胞类型相同不同样本、细胞类型差异不是很大不同样本、细胞类型存在较大差异不同样本。...方法介绍 (1)Harmony Harmony使用一种迭代聚类方法,找到一个细胞特异性线性校正函数。首先,将不同批次中数据整合,使用PCA降维后进入迭代过程。...;最后,每个细胞可以根据每个类别的加权平均得到一个线性校正因子,因为每个细胞属于多个类别,所以每个细胞都有不同校正因子。...最后,kBET结果以平均检验拒绝率作为评估标准,拒绝率越低,批次效应引入偏差就越小。在本文中,对共有的细胞类型进行了kBET检验,并使用接受率(即1-拒绝率)作为评估标准。 ?

3.9K52

关于 JavaScript 错误处理最完整指南(下半部)

如果可迭代对象中没有一个 promise 成功(即所有的 promises 都失败/拒绝),就返回一个失败 promise 和AggregateError类型实例,它是 Error 一个子类,用于把单一错误集合在一起...使用 Promise.race 来处理错误 Promise.race(iterable) 方法返回一个 promise,一旦迭代器中某个promise解决或拒绝,返回 promise就会解决或拒绝...这里说明,第一个 Promise 比第二个行执行完。那包含拒绝情况又是怎么样? const promise1 = Promise.resolve("The first!")...; 我们传递给Promise.allSettled一个由两个Promise组成数组:一个已解决,另一个拒绝。 这种情况 catch 不会被执行, finally 永远会执行。...使用 async generators 来处理错误 JavaScript中async generators是能够生成 Promises 而不是简单值生成器函数

2.2K20

一文详聊前端异常原理

如果 RHS 查询找到了一个变量,但是你尝试对这个变量值进行不合理操作,会抛出另外一种类型异常,叫作 TypeError。 3....TypeError TypeError 在对值进行不合理操作时会发生,比如试图对一个函数类型值进行函数调用,或者引用 null 或 undefined 类型值中属性,那么引擎会抛出这种类型异常...当编译器检测到一个函数调用是尾递归时候,它就覆盖当前活动记录而不是在栈中去创建一个。 5. Error 与自定义异常 Error 是所有错误基类,其他错误类型继承该类型。...所有错误类型都共享相同属性。 Error.prototype.message 错误消息。对于用户创建 Error 对象,这是构造函数一个参数提供字符串。...比如上文提到 React 自定义异常; 一个健壮函数,会对参数进行类型有效性判断;通常在实参不合理时,为了避免报错阻断程序运行,开发者会通过默认值,return 空等方式处理。

1.4K40

【译】前端知识储备——PromiseA+规范

最终,核心Promise/A+文档不关心如何去创建、完成(resolve)或者拒绝(reject)一个Promise,而是聚焦在提供一个可交互then函数。...如果onFulfilled不是一个函数,那么它必须被忽略掉。 2.2.1.2. 如果onRejected不是一个函数,那么它必须被忽略掉。 2.2.2....如果promise和x指向同一个对象,那么用TypeError作为原因拒绝promise。 2.3.2. 如果x是一个promise,判断它状态: 2.3.2.1....否则,使用e作为原因拒绝promise。 2.3.3.4. 如果then不是一个函数,那么用x完成promise。 2.3.4. 如果x不是一个对象或者函数,那么用x完成promise。...对这种递归情况检测并且使用TypeError作为原因进行拒绝,我们鼓励实现,但不要求。 3. 注意事项 3.1.

1.3K30
领券