鸿蒙原生应用开发者激励计划发布!最高获百万现金!点击立即参与
我的本意是想要卡住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)
函数只要加了async,返回值就会被包装为Promise,比如return 1,会被包装为Promise<1>,只能通过async /await 组合获取Promise的返回值,或者通过 main().then(x => console.log(x)),只能这样
函数只要加了async,返回值就会被包装为Promise
你这是属于异步函数同步调用,改成异步调用var result=await main()就达到你的目的了
按照下面这样写就行了
(async () => {
var result = await main();
console.log('main result', result);
})();