我想知道你是否有一些干净的方法来创建一个函数,当它自己调用时返回一个promise,并在.then
中链接时返回一个函数。
示例:
// returns a promise. use to start chains:
// eg: wait(400).then(...)
const wait_p = (t) => new Promise( resolve => setTimeout( resolve, t) );
// returns a function: use inside .then():
// eg: $get('whatever').then(wait_f(300))
const wait_f = (t) => () => wait_p(t)
在单个wait()
函数中合并wait_p和wait_f的最简洁方法是什么?
//hypotetically:
const put = (x) => () => console.log(x)
wait(1000)
.then(put('one'))
.then(wait(1000))
.then(put('two'))
答案 0 :(得分:2)
具有精神分裂症功能可能不是一个好主意,即使你可以弄清楚如何去做。选择一个并使用它。之一:
wait_f(1000)().then(wait_f(1000))...
或
wait_p(1000).then(() => wait_p(1000))...
就我个人而言,我经常使用像wait_f
这样的函数,但我很少发现自己想用它来创建一个承诺链。
答案 1 :(得分:1)
我猜你可以使用then
方法返回一个函数:
const wait = t => {
var p = new Promise(resolve => setTimeout(resolve,t));
var func = () => p;
func.then = (...args) => p.then(...args);
return func;
}
wait(400).then(() => console.log('Hello'))
Promise.resolve().then(wait(500)).then(() => console.log('World'))