Node.js 在使用“时使用我的回调函数时出现问题”;为了“什么?”;?

Node.js 在使用“时使用我的回调函数时出现问题”;为了“什么?”;?,node.js,function,for-loop,callback,explain,Node.js,Function,For Loop,Callback,Explain,我的代码: console.log('Start') getMember((member) => { console.log(member) }) console.log('End') function getMember(next) { for (let index = 0; index < 1000000000; index++) { // Simulation setTimeout() } next('In getMember') }

我的代码:

console.log('Start')
getMember((member) => { console.log(member) })
console.log('End')

function getMember(next) {
    for (let index = 0; index < 1000000000; index++) {
        // Simulation setTimeout()
    }
    next('In getMember')
}
console.log('Start'))
getMember((成员)=>{console.log(成员)})
console.log('End')
函数getMember(下一个){
对于(让索引=0;索引<100000000;索引++){
//模拟setTimeout()
}
next('In getMember')
}
返回:
开始
在getMember中
结束

我以为我得到了以下结果(见下文),但事实并非如此,你能解释一下吗

返回:
开始
结束
在getMember中

谢谢

伊夫


console.log('Start')
函数resolveAfter2Seconds(){
返回新承诺(解决=>{
//setTimeout(()=>{resolve('resolved')},2000);
对于(让index=0;index<100000000;index++){}
决议(“已决议”);
})
};
异步函数asyncCall(){
console.log('calling');
const result=等待resolveAfter2Seconds();
控制台日志(结果);
}
异步调用();
console.log('End');
返回:
开始
呼叫
结束
决心


我的印象是,承诺可以更好地处理回调

nodejs中的异步代码本身是非阻塞的。这意味着它不会停止
for
循环并等待异步操作完成。如果您向我们展示真正的异步代码,而不是模拟,我们可以帮助您解决真正的问题。谢谢。因此,如果我理解正确,“for”指令会使代码同步!?我想当我用“callback”参数调用函数时,它会自动使它异步!在
for
循环中显示一些真正的异步代码和一个真正的问题,我很乐意解释。一条评论说“模拟”并没有给我们任何真实的解释。理论问题在stackoverflow上不太适用,因为理论答案需要像一本书中的一章那样来解释所有的可能性。显示真实代码和描述真实问题的问题通常会立即得到解决,因为一个简短的代码片段和一点解释可以快速为您指明方向。您对
for
循环和回调以及异步的理解似乎有缺陷,但是,请展示一段您试图用来解决实际问题的真正的异步代码,然后我可以解释更多与此相关的内容。在本例中,异步似乎可以工作,因为输出是:Start calling End resolved!我用“for”(模拟setTimeout)替换了我的“setTimeout”,好吧,它是阻塞的,但是在“End”之后我有了我的“resolved!”,这不是我第一个例子中的情况,奇怪!这并没有说明所提出问题的
for
循环中的异步操作。
console.log('Start')
function resolveAfter2Seconds() {
    return new Promise(resolve => {
        // setTimeout(() => { resolve('resolved') }, 2000);
        for (let index = 0; index < 1000000000; index++) { }
        resolve('resolved !');
    })
};

async function asyncCall() {
    console.log('calling');
    const result = await resolveAfter2Seconds();
    console.log(result);
}

asyncCall();

console.log('End');