技术解析

想请教一下关于获取计时器内部数据的问题
0
2021-08-10 03:46:25
idczone
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,这样的话有办法解决吗

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服