我保证我要等待,但是没有用。
这是我的方法:
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 =名称/ OU =测试/ O =示例
Promise Promise {}
但是,该方法立即返回,await promise
并不等待承诺被解决。
为什么不呢?
我正在调用的方法也是异步的:
export const getSearchResults = async (env: Environment, searchConfig: SearchConfig, query: string): Promise<ISearchResult> => {
return new Promise((resolve, reject) => {
... resolve/reject as appropriate ...
});
};
答案 0 :(得分:1)
还有其他问题。我模拟了您的代码,等待效果很好。
async function lookupAndAddManager(id, record, fieldNameToAdd) {
console.log(`Searching ${id}`);
let promise = getSearchResults();
console.log("Promise will be promised and then wait 3 seconds, now its just unresolved promise object", promise)
let response = await promise;
console.log("After 3 seconds, we got response", response);
}
const getSearchResults = async (env, searchConfig, query) => {
return new Promise((resolve, reject) => {
setTimeout(() => resolve('Yeeey, resolved'), 3000);
});
};
lookupAndAddManager(10);