Promise.reject(1).then(2).then(res => { return 3 }).catch(error => { return 4 }).then(Promise.resolve(5)).then(console.log)
时间: 2024-04-02 20:18:53 浏览: 17
这段代码会输出数字 4。让我们逐步解释一下为什么会这样:
1. `Promise.reject(1)` 返回一个被拒绝的 Promise,其拒绝原因为数字 1。
2. `.then(2)` 返回一个新的 Promise,它的回调函数不会被调用,因为前一个 Promise 被拒绝了。
3. `.then(res => { return 3 })` 返回一个新的 Promise,它的回调函数也不会被调用,因为前一个 Promise 被拒绝了。
4. `.catch(error => { return 4 })` 返回一个新的 Promise,它的回调函数被调用并返回数字 4(作为一个被解决的 Promise)。
5. `.then(Promise.resolve(5))` 返回一个新的 Promise,它的回调函数不会被调用,因为参数不是一个函数。
6. `.then(console.log)` 返回一个新的 Promise,它的回调函数被调用并打印数字 4。
因此,最终输出的结果为数字 4。
相关问题
export function logout() { return new Promise((resolve, reject) => { http .post('/sys/logout') .then(res => { resolve(res) }).catch(err => { reject(err) }) }) }
这是一个使用 Promise 封装的登出函数。它通过调用一个名为 `/sys/logout` 的接口来执行登出操作。如果操作成功,`resolve` 函数将被调用并传递一个响应对象 `res`,否则 `reject` 函数将被调用并传递一个错误对象 `err`。在调用该函数时,你可以使用 `then` 方法来处理成功的响应,或使用 `catch` 方法来处理错误。例如:
```
logout()
.then(res => {
console.log(res) // 处理响应
})
.catch(err => {
console.error(err) // 处理错误
})
```
小程序代码: “ openAndListenBluetoothAdapter() { // 未初始化蓝牙适配器,打开蓝牙适配器 if (!this.isInitializedAdapter) { // // 监听蓝牙适配器状态 _.api('onBluetoothAdapterStateChange', 'onBluetoothAdapterStateChange') .then(__ => __) .catch(__ => __); _.on('onBluetoothAdapterStateChange', 'onBluetoothAdapterStateChange', res => { this.bm.log('onBluetoothAdapterStateChange', res); if (res.available && !this.isAvailableAdapter) { this.isAvailableAdapter = true; this.callBackConnectStatus(SuccessCallbackEvent.Success_ConnectStatus_CB_PowerOn); } else if (!res.available) { this.isAvailableAdapter = false; // 支付宝小程序当蓝牙适配器关闭,再次进行蓝牙操作需要重新打开,微信只需要打开一次就行 _.getAppPlatform() === 'ant' && (this.isInitializedAdapter = false); this.bm.connectStatus = ConnectStatus.disconnected; this.callBackConnectStatus(ErrorCallbackEvent.Error_ConnectStatus_CB_PowerOff); } }); // 先关闭再打开蓝牙适配器,避免出现某些机型打开无效的情况 return _.api('closeBluetoothAdapter') .then(__ => { // 打开蓝牙适配器 return _.api('openBluetoothAdapter') }).then(res => { this.bm.log('openBluetoothAdapter success', res); this.isInitializedAdapter = true; this.isAvailableAdapter = true; return Promise.resolve(); }).catch(e => { this.bm.log('openBluetoothAdapter fail', e); this.isInitializedAdapter = false; this.isAvailableAdapter = false; this.bm.connectStatus = ConnectStatus.disconnected; return Promise.reject(e); }) } else { return Promise.resolve(); } } ” 。提示错误“onOnBluetoothAdapterStateChange should accept a function instead of object” ,请修改
把代码中的:
```
_.api('onBluetoothAdapterStateChange', 'onBluetoothAdapterStateChange')
.then(__ => __)
.catch(__ => __);
```
修改为:
```
_.api('onBluetoothAdapterStateChange', res => {
this.bm.log('onBluetoothAdapterStateChange', res);
if (res.available && !this.isAvailableAdapter) {
this.isAvailableAdapter = true;
this.callBackConnectStatus(SuccessCallbackEvent.Success_ConnectStatus_CB_PowerOn);
} else if (!res.available) {
this.isAvailableAdapter = false;
_.getAppPlatform() === 'ant' && (this.isInitializedAdapter = false);
this.bm.connectStatus = ConnectStatus.disconnected;
this.callBackConnectStatus(ErrorCallbackEvent.Error_ConnectStatus_CB_PowerOff);
}
});
```
这是因为在调用 `_.api('onBluetoothAdapterStateChange', 'onBluetoothAdapterStateChange')` 方法时,第二个参数应该是一个函数而不是一个字符串。修改后,将在函数内部处理蓝牙适配器状态的变化。