【发布时间】:2019-12-10 01:44:31
【问题描述】:
我有一个承诺,我正在尝试等待,但它不起作用。
这是我的方法:
async function lookupAndAddManager(id, record, fieldNameToAdd) {
console.log(`Searching ${id}`);
let promise = ups.getSearchResults(ups.Environment.Prod, ups.SearchConfig.Email, ups.emailFromId(id))
console.log("Promise", promise)
let response = await promise;
}
我这样称呼它:
lookupAndAddManager(row.BPO, row, 'BPO_MGR')
我的输出是:
搜索 CN=Name/OU=TEST/O=EXAMPLE
承诺承诺{}
但是,该方法会立即返回,await promise 不会等待 promise 被解析。
为什么不呢?
我调用的方法也是异步的:
export const getSearchResults = async (env: Environment, searchConfig: SearchConfig, query: string): Promise<ISearchResult> => {
return new Promise((resolve, reject) => {
... resolve/reject as appropriate ...
});
};
【问题讨论】:
-
await lookupAndAddManager(row.BPO, row, 'BPO_MGR')你也应该这样称呼它。它返回一个承诺。 -
这是一个异步方法,所以,当然,它会立即返回...除非您在调用它的函数中也等待lookupAndAddManager。这就是异步的工作原理。
-
只是为了确认您正在使用 await 来调用您的异步函数 lookupAndAddManager,对吧?
-
不,我从我的主入口点调用
lookupAndAddManager,所以它不是从异步方法调用的。在某些时候,我必须从非异步方法调用该方法
标签: javascript promise async-await nodes