【发布时间】:2021-12-31 10:05:11
【问题描述】:
我被要求创建一个名为 foo 的对象,它可以链接函数 log 和 wait。
例如:
foo.log('breakfast').wait(3000).log('lunch').wait(3000).log('dinner');
在这种情况下,它首先打印 breakfast,等待 3 秒,然后打印 lunch,然后在 3 秒后打印 dinner。
我尝试了类似的方法,但它不起作用。我错过了什么?
var foo = {
log: function(text){
console.log(text);
return foo;
},
wait: function(time) {
setTimeout(function() {
return foo;
}, time);
}
}
foo.log('breakfast').wait(3000).log('lunch').wait(3000).log('dinner');
【问题讨论】:
-
我猜问题出在等待函数中 - setTimeout 立即返回并且它什么也不返回,所以调用 log on nothing 会出错。
-
@kiner_shah 实现它的正确方法是什么?我不知道如何让它等待然后再次返回对象。
-
也许让等待异步函数,然后定义睡眠函数,如这篇文章:stackoverflow.com/a/39914235
-
看起来有点像这个问题:stackoverflow.com/q/32081949/1447675