promise状态fullfilled和resolved
时间: 2024-02-05 10:04:46 浏览: 25
在Promise中,当一个异步操作成功完成时,Promise实例的状态会从pending变成fulfilled或resolved。这两个状态都表示Promise实例已经成功完成,并且在状态变为这两种状态后,Promise实例将不再改变其状态。
具体来说,fulfilled状态表示Promise实例已经成功完成并返回了一个值,而resolved状态表示Promise实例已经成功完成但没有返回任何值。这两个状态之间的区别在于,如果Promise实例返回了一个值,则该值将作为then()方法中的第一个参数传递给处理程序;如果没有返回值,则第一个参数将是undefined。
总之,无论是fulfilled还是resolved状态,都表示Promise实例已经成功完成,可以通过then()方法中的处理程序来访问其结果。
相关问题
promise如何抛出异常
在Promise中,可以通过在resolve或reject处理函数中抛出错误来抛出异常。如果在resolve处理函数中抛出错误,那么错误会被抛到全局,状态变为rejected;如果在reject处理函数中抛出错误,错误也会被抛到全局,状态同样变为rejected。但是,如果在then的reject处理函数中抛出错误,错误会被catch捕获到,状态变为fullfilled。这是因为catch方法会返回一个新的Promise对象,所以如果在catch方法中处理了错误,那么Promise的状态就会变为fullfilled。
举个例子,如果我们在Promise中使用then和catch方法,可以这样写:
```
var promise = new Promise((resolve, reject) => {
reject();
}).then(() => {
console.log('resolve');
}, (err) => {
throw new Error('nono'); //在reject处理函数中抛出错误
console.log('reject');
console.log(err);
}).catch((err) => {
console.log('catch'); //错误被catch捕获到
console.log(err);
});
setTimeout(() => {
console.log(promise);
}, 0);
```
在上面的例子中,我们在reject处理函数中抛出了一个错误,但是这个错误被catch方法捕获到了,所以Promise的状态变为fullfilled。
windows10家庭版 docker desktop 安装失败
Windows 10家庭版安装Docker Desktop会报"Installation failed: one pre-requisite is not fullfilled"错误。这是因为家庭版不支持Hyper-V,而Docker Desktop需要Hyper-V支持才能正常安装。为了解决这个问题,你可以通过以下步骤来绕过安装检测并安装Docker Desktop:
1. 打开注册表编辑器,可以通过运行命令"regedit"来打开。
2. 导航到"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"路径。
3. 在该路径下,右键单击并选择"新建",然后选择"DWORD (32位)值"。
4. 将新建的值命名为"EditionID"。
5. 右键单击新创建的"EditionID"值,选择"修改"。
6. 在"数值数据"字段中输入"Professional",然后点击"确定"保存更改。
7. 关闭注册表编辑器,并重新启动计算机。
8. 在重启后,下载并安装Docker Desktop,此时应该能够顺利完成安装。
请注意,通过修改注册表来绕过安装检测可能会违反Microsoft的许可条款。请确保您已经了解相关风险,并在自己的责任范围内操作。