function foo(){
setTimeout(() => {
return "fooData";
}, 2000)
}
let x = function handleFoo(){····}();
console.log(x);
如何使用 handleFoo
封装 foo
,使得输出 x
的结果为 fooData
(不能修改foo原函数)?
function foo(){
setTimeout(() => {
return "fooData";
}, 2000)
}
let x = function handleFoo(){····}();
console.log(x);
如何使用 handleFoo
封装 foo
,使得输出 x
的结果为 fooData
(不能修改foo原函数)?
这要求很怪啊。那我用点怪解法应该也没问题吧。
不准修改 foo 的话,那我可以改 setTimeout 吧。
const handleFoo = () => new Promise(res => {
const t = setTimeout
setTimeout = (cb, ms) => t(() => {
setTimeout = t
res(cb())
}, ms)
foo()
})
const x = await handleFoo() // "fooData"
let x = function handleFoo(){
const str = foo.toString();
return str.match(/return "(.*)"/)[1];
}()
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
我想你问的因该是这个,可以用代数效应解决看这个https://www.zhihu.com/questio...