【发布时间】:2023-03-16 06:15:01
【问题描述】:
我想知道我是否能够使用setTimeout 完成这项工作。
函数together 必须采用funcs,这是一个异步函数列表以及pred 和n。
每个函数都必须调用callback,它必须返回一个值或一个错误。
如果我删除setTimeout 并只留下return cb(...),它会起作用,但我想在每个函数中调用callback 之前setTimeout。
together 必须返回一个被 pred 接受的结果数组,例如如果pred > 10,results 只包含大于 10 的值。
我的代码:
function fun1(value,cb) {
if ((value * 100) > 400) {
return setTimeout(() => cb(null, value*100), 2000)
}
else {
return cb(new Error("error"))
}
}
function fun2(value,cb) {
if ((value * 20) > 50) {
return setTimeout(() => cb(null, value*20), 2000)
}
else {
return cb(new Error("error"))
}
}
function fun3(value,cb) {
if ((value -30 ) > 0) {
return setTimeout(() => cb(null, value-30), 2000)
}
else {
return cb(new Error("error"))
}
}
function callback(err, wyn) {
if (err) {
console.log(err)
}
else {
return wyn
}
}
//console.log(fun1(1000,callback))
const together = (funcs, pred) => (n) => {
let results = []
funcs.reduce((prev,curr) => {
if (curr(n,callback) > pred) {
results.push(curr(n,callback))
}
}, 0)
return results
};
console.log(together([fun1,fun2,fun3], 5)(10))
【问题讨论】:
标签: javascript node.js asynchronous