function a (){
let a = 0
a = 1
let loader = setInterval(function () {
abc ()
clearInterval(loader)
}, 1000)
function abc (){
a +=1
}
return a
}
我的预想是 return 的 a 为 2,但是现在 return 的结果依旧是 1,请问这个该怎么解决啊
返回的时候 setInterval 里面的函数并没被执行
那这个该怎么解决
async
await
promise
自己了解
@lianyue
const foo = () => {
let bar = 1
return new Promise(resolve => {
setTimeout(() => resolve(++bar), 3000)
})
}
(async() => console.log(await foo()))()
如果没法子使用 async 的话请问这个应该如何解决
主要是没法子使用 async
const foo = () => {
let bar = 1;
return new Promise((resolve) => {
setTimeout(() => resolve(++bar), 3000);
});
};
(() => {
foo().then((bar) => {
console.log(bar)
})
})();
const foo = (callback) => {
let bar = 1;
setTimeout(() => {
bar++;
callback?.(bar)
}, 3000);
};
(() => {
foo((bar) => console.log(bar))
})();
我想问一下第一种,比如 a 有一个```b+=bar```,然后把 b 给 return 出去,这时候因为 foo 里有个异步操作使用了 promise,这样的话就需要在 a 方法里面执行.then 来获取 bar,这样的话会是先```return b```,然后才执行```b+=bar```。
因为这个 b 要被上层方法使用,不能再把 a 方法也写成 promise,这样的话有办法解决吗