js-实现链式调用

问题

上次被问到链式调用怎么实现, 而且需要中间seelp停顿n秒,再继续往下执行;
链式调用思路是返回this, seelp的思路是利用js单线程while阻塞; (利用for等也是一样的)

简单示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
let chain = {
log(...args) {
console.log(args.toString());
return this;
},
// 单位 ms
sleep(delay) {
let start = Date.now();
while (+new Date() < start + delay) {}
// 或 for(;+new Date() < start + delay;){}
return this;
},
};

chain
.log("start")
.sleep(2000)
.log("2s after")
.log("continue")
.sleep(5000)
.log("5s after");
// start
// 2s after
// continue
// 5s after