新人求问,异步变同步的问题?

剑指天涯 发布于 09/09 10:15
阅读 399
收藏 0

鸿蒙原生应用开发者激励计划发布!最高获百万现金!点击立即参与

我的本意是想要卡住main()方法,因为main方法返回的结果是需要异步才能拿到,但是我这样写,打印出来的是个Promise,而不是一个具体的值

async function doSomethingAsync() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('Operation completed asynchronously');
    }, 2000);
  });
}

function doSomethingSync() {
  return doSomethingAsync();
}

// 同步调用异步函数
async function main() {
  console.log('Starting operation...');
  const result = await doSomethingSync(); // 等待异步操作完成
  console.log(result);
  console.log('Operation completed synchronously.');
  return result;
}

var result = main();
console.log('main result', result)
加载中
0
一生的职业-学生
一生的职业-学生

函数只要加了async,返回值就会被包装为Promise,比如return 1,会被包装为Promise<1>,只能通过async /await 组合获取Promise的返回值,或者通过 main().then(x => console.log(x)),只能这样

0
o
osc_48337743

函数只要加了async,返回值就会被包装为Promise

 

0
o
osc_15044943

你这是属于异步函数同步调用,改成异步调用var result=await main()就达到你的目的了

0
osc_25877510
osc_25877510

按照下面这样写就行了
(async () => {
    var result = await main();
    console.log('main result', result);
})();

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部