沙滩星空的博客沙滩星空的博客

JS如何异步转同步 将Promise.then中的值取出并返回

问题

无法将then里的值 暴露出来。研究了好久。

export async function getAsyncRoutes() {
  let routes = []
  await getInfo().then(info => {
    routes = info.routes
    console.log(routes)
  })
  console.log(routes)
  return routes
}

答案

无法在当前获得未来的值。一步异步,处处异步。
应该返回一个Promise,然后在then的执行体中处理。或者async/await 。

promise对象似乎无法取出里面的值.promise的链式调用, 表明它返回的依然是一个promise对象.
即使用 async 来包装, async函数本身返回的就是一个promise对象, 依然没用.
似乎绕来绕去, value值永远在promise对象的肚子里, 出不来.

Promise

<script>
function getSomething() {
 var r = 0;
 return new Promise(function(resolve) {
 setTimeout(function() {
  r = 2;
  resolve(r);
 }, 10);
 });
}

function compute(x) {
 alert(x * 2);
}
getSomething().then(compute);
</script>

如何将Promise.then中 取值并返回? https://www.zhihu.com/question/274196779
promise+await解决js中异步任务返回值的问题 https://www.jianshu.com/p/ad70c9c36c22
获取JavaScript异步函数的返回值 https://www.jb51.net/article/100661.htm

未经允许不得转载:沙滩星空的博客 » JS如何异步转同步 将Promise.then中的值取出并返回

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址