Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 嵌套的setTimeout在js中无法正常工作_Javascript_Promise_Callback - Fatal编程技术网

Javascript 嵌套的setTimeout在js中无法正常工作

Javascript 嵌套的setTimeout在js中无法正常工作,javascript,promise,callback,Javascript,Promise,Callback,我有两个职能: function one(callback) { setTimeout(function () { console.log('one'); callback(); }, 3000); } function two(callback) { setTimeout(function () { console.log('two'); callback(); }, 2000); } 当我调

我有两个职能:

function one(callback) {
    setTimeout(function () {
        console.log('one');
        callback(); 
    }, 3000);
}

function two(callback) {
    setTimeout(function () {
        console.log('two');
        callback();
    }, 2000);
}
当我调用如下函数时:

one(two(()=> console.log('Done!')))
one
two 
done
发生的情况如下:

two
Done!
one
/Users/shahryarhaghighifard/Downloads/test/callback.js:68
    callback(); 
    ^

TypeError: callback is not a function
我看到当函数“one”等待超时时,第二个函数运行。但是怎么做呢?3秒钟后我才打电话。你知道怎么做吗?我希望这样输出:

one(two(()=> console.log('Done!')))
one
two 
done

如果您能解释一下这里发生了什么,我会很高兴的。

您正在调用第二个函数并将其返回给第一个函数。因为它不返回任何内容,所以您将其设置为未定义

分解代码,您可以看到发生了什么

函数一(回调){
setTimeout(函数(){
console.log('one');
回调();
}, 3000);
}
函数二(回调){
setTimeout(函数(){
console.log('two');
回调();
}, 2000);
}
var secondFunction=two(()=>console.log('Done!'));
console.log('secondFunction',secondFunction)
一个(()=>secondFunction)