节点未等待承诺

时间:2019-08-01 12:47:37

标签: javascript promise async-await nodes

我保证我要等待,但是没有用。

这是我的方法:

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 ...
    });
};

1 个答案:

答案 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);