📅  最后修改于: 2023-12-03 15:32:26.089000             🧑  作者: Mango
在 JavaScript 中,我们通常使用 await
关键字来等待异步操作的结果。但是,await
只能在异步方法中使用。那么在同步方法中如何使用 await
呢?本文将为您介绍两种方法。
可以将同步方法转换成异步方法,然后在异步方法中使用 await
,最后将异步方法转换成同步方法。下面是示例代码:
function syncMethod() {
const result = doSomething();
return result;
}
async function asyncMethod() {
const result = await doSomethingAsync();
return result;
}
function newSyncMethod() {
return asyncMethod().then(result => result);
}
这里我们将同步方法 syncMethod()
转换成异步方法 asyncMethod()
,在异步方法中使用 await
。最后将异步方法 asyncMethod()
转换成同步方法 newSyncMethod()
,使用 then
方法获取异步方法返回的值。
另一种方法是创建一个自定义的 Promise,然后在同步方法中使用 await
。下面是示例代码:
function syncMethod() {
const customPromise = new Promise(function(resolve, reject) {
const result = doSomething();
resolve(result);
});
return customPromise;
}
这里我们创建了一个自定义的 Promise customPromise
,在 Promise 中执行同步方法 doSomething()
,然后将结果传递给 Promise 的 resolve
方法。最后在同步方法中返回 Promise 对象 customPromise
。在调用方,我们可以使用 await
来获取 Promise 的返回值,如下所示:
async function caller() {
const result = await syncMethod();
console.log(result);
}
以上是两种在同步方法中使用 await
的方法,可以根据实际情况进行选择。