在 NodeJs 中的函数中保存或返回 REST 服务响应



我正在尝试从函数内部返回服务响应,但是该函数在服务执行结束之前返回值,因此我总是得到一个空值作为回报。

我尝试使用回调,但不起作用,尽管我没有尝试过承诺。我可以在另一个函数中使用它们吗?

我的代码片段:

    function getBoonInfoByISisbn(isbn, jsonString) {
    var result = null;
    var requestURL = domainURL + "getbkinfbyisisbn?isbn=" + isbn;
    mongoClient.registerMethod("getbkinfbyisisbn", requestURL, "GET");
    var args = {
        // data: {
        //     isbn:isbn
        // },
        headers: { "Content-Type": "application/json" }
    };
    var apiRequest = mongoClient.methods.getbkinfbyisisbn(args, function (data, response) {
        // console.log(data); - getting data output on console
        result = data; /*this has data*/
    });
    return result; /*this is always null*/
}

此服务返回单个 JSON 对象(如果完全匹配(或 null(如果不是完全匹配(

我想在我的代码中的其他地方使用此详细信息。

使用承诺:

function getBoonInfoByISisbn(isbn, jsonString) {
    return new Promise((resolve, reject) => {
        let requestURL = `${domainURL}getbkinfbyisisbn?isbn=${isbn}`;
        mongoClient.registerMethod("getbkinfbyisisbn", requestURL, "GET");
        let args = {
            headers: {
                "Content-Type": "application/json"
            }
        };
        mongoClient.methods.getbkinfbyisisbn(args, (data, response) => {
            resolve(data);
        });
    })
}

您正在尝试返回异步结果。尝试使用 Promise 在值到达时返回值。看这里: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

希望这对;)有所帮助

回调是异步的...所以return result将在apiRequest内的任何内容之前执行,这就是result == null.尝试使用 async/await 作为替代方法。更多关于这一点

这里

最新更新