javascript 我如何利用承诺来获得价值

5jdjgkvh  于 2022-12-28  发布在  Java
关注(0)|答案(2)|浏览(112)

我已经试过了,但给了我一个承诺,我只想这样做。

function doSome() {
  return new Promise(
    function(res, rej) {
      let d = [];
      for (var i = 0; i < 100; i++) {
        d.push(i)
      }
      res(d)
    })

}
console.log(doSome().then((val)=>{return val}));
wgeznvg7

wgeznvg71#

提供的代码将不会打印预期的输出,因为您正在尝试console.log()Promise本身而不是其值。由于console.log()同步,而Promise具有异步特性,因此可以通过将日志记录移至.then块来解决此问题:

function doSome() {
  return new Promise(
    function(res, rej) {
      let d = [];
      for (var i = 0; i < 100; i++) {
        d.push(i)
      }
      res(d)
    })

}

doSome()
  .then((val) => { return val })
  .then((val) => {
    // Do something
    console.log(val);
  });
t9eec4r0

t9eec4r02#

你可以使用await,因为promise是一个异步函数

function doSome() {
    return new Promise((resolve , reject) => {
        let d = [];
        for (var i = 0; i < 100; i++) {
        d.push(i)
        }
        resolve(d)         
    });
}

//way to main function
async function main() {
    console.log(await doSome());
}
main();

//directly
(async () => {
    console.log(await doSome());    
})();

相关问题