node.js - 在使用“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 中
开始
结束
谢谢,
伊夫
解决方案
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');
返回:
开始
调用
结束
解决!
我的印象是承诺更好地处理回调!
推荐阅读
- swift - 如何将以下代码从 Swift 2 转换为 Swift 5?
- c# - 代码正在运行,但 UPDATE 语句不更新数据
- html - 使用内容版本策略时在 Spring 中缓存 @import css
- python - 字符串切片和操作
- mysql - 我需要总结 3 月份的访问次数,并且在另一列中有 4 月份的访问次数,我该如何在一个查询中做到这一点?
- c - 需要将用户输入的字符串转换成不同的变量来使用
- google-sheets - Countif 并在两张纸上查找
- sql-server - `merge` 语句会保证所有插入行的 `default current_timestamp` 列的值相同吗?
- html - 如何在 Aframe(故障)中的平面上加载 gif(具有透明度)?
- c# - GetHashCode 是否保证在对象的生命周期内相同?