想用vue实现promise链式编程的简洁写法,请大佬看看哪里有问题:
有这样一个方法 请求前要判断勾选脚本,和节点是否繁忙,我把这两个校验抽离出来封装成单独的方法,总感觉哪里有问题.
就这三个方法,依次执行,之前是写在回调函数then()里面进行判断
一层层嵌套太僵硬了 现在想用es新语法promise进行优化,请大佬不吝赐教
想用vue实现promise链式编程的简洁写法,请大佬看看哪里有问题:
有这样一个方法 请求前要判断勾选脚本,和节点是否繁忙,我把这两个校验抽离出来封装成单独的方法,总感觉哪里有问题.
就这三个方法,依次执行,之前是写在回调函数then()里面进行判断
一层层嵌套太僵硬了 现在想用es新语法promise进行优化,请大佬不吝赐教
没看到你有创建Promise对象...
创建方式:
let promise = new Promise((resolve, reject) => {
if (xxx) {
resolve()
} else {
reject() // 调用resolve传递一个和成功不一样的参数就行了 比如 resolve(false),正常状态调用resolve(true)
}
})
这是一个promise,这个promise可then.
为什么Promise可以链式调用?因为then本身创建了一个新的Promise,继承原promise的决议状态(成功或失败)。
通常 promise.then(res => {}, error => {}),接收两个函数参数,对应promise的resolve和reject。
而这两个函数参数可以缺省,缺省调用方式分别如下。
不传错误处理:
promise.then(res => {})
不传正常处理:
promise.then(undefined, error => {})
这种情况有简写形式,即catch:
promise.catch(error => {})
checkThescrip() {
return new Promise((resolve, reject) => {
const that = this;
that.$refs[form].validate(valid = > {
if (valid) {
if (xxx) {
} else {
}
reject('error');
}
resolve(that);
});
});
}
就按照这种思路去写,checkTehscrip().catch().then(() => judgmentTheNodeIsBuy()).then()
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答873 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
经过大佬提点后改成这样的模式:
请大佬指正有何错误 目前功能实现 接口调通了 但是还是觉得有点臃肿 怎么继续优化?