首页 > 解决方案 > 在使用“For”时使用我的回调函数有问题吗?

问题描述

我的代码:

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')
}

返回:
开始
于 getMember
结束

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

返回: 在 getMember 中
开始
结束

谢谢,

伊夫


标签: node.jsfunctionfor-loopcallbackexplain

解决方案


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');

返回:
开始
调用
结束
解决!

我的印象是承诺更好地处理回调!


推荐阅读