promise链式编程如何实现?

想用vue实现promise链式编程的简洁写法,请大佬看看哪里有问题:

有这样一个方法 请求前要判断勾选脚本,和节点是否繁忙,我把这两个校验抽离出来封装成单独的方法,总感觉哪里有问题.

image.png
image.png
image.png

就这三个方法,依次执行,之前是写在回调函数then()里面进行判断

一层层嵌套太僵硬了 现在想用es新语法promise进行优化,请大佬不吝赐教

阅读 2.6k
3 个回答

经过大佬提点后改成这样的模式:

clipboard.png

clipboard.png

clipboard.png


请大佬指正有何错误 目前功能实现 接口调通了 但是还是觉得有点臃肿 怎么继续优化?

clipboard.png

没看到你有创建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()

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题