JS中什么时候可以用链式写法?

js中promise可以支持链式写法,用then catch 链式写下去

但我看到了一个源码

var router = express.Router();

router.route('/api')
    .post(function(req, res) {
        // ...
    })
    .get(function(req, res) {
        Bear.find(function(err, bears) {
            if (err) res.send(err);
            res.json(bears);
        });
    });

这里面也没有new Promise()表示是一个promise,也去链式写下去了,可以么?如果可以,我看的书可能是盗版的,有没有相关介绍链式写函数的资料( ̄▽ ̄)/

阅读 3.3k
2 个回答

这样的就能

var obj = {}
obj.fun = function(){return this}
obj.fun().fun().fun().fun().fun().fun()..........

咋解释呢,返回值上有方法能被调用就能。
promise的可以看这个

链式书写根本不是什么特别的。。

如果一个函数调用返回一个对象,而这个对象包括很多方法,这样就可以链式书写。因为 Promise 的 then 方法返回的是 Promise ,所以就能链式书写了呗,catch 也一样,就是then(null,catch)的语法糖,返回的也是Promise。

在js中最常见的就是数组方法了。

const arr = [1,2,3]
arr.slice(1,2).pop()

简单的写一个就是


const obj = {
    count: 0,
    add() {
        this.count++;
        return this;
    },
    dec() {
        this.count--;
        return this;
    }
}

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