【问题标题】:Return value from function to calling function in different file Node.JS从函数返回值到不同文件Node.JS中的调用函数
【发布时间】:2019-12-17 14:42:41
【问题描述】:

我需要调用另一个文件中的方法并将该方法的输出返回给原始调用者。

我尝试过使用各种回调方法、promise 等,但都没有成功。下面是我正在调用的函数/方法。

methods.sdata = function gather_data(path, body) {
    var d = new Object();
    var initializePromise = initialize_session();
    initializePromise.then(function(result) {
        sessionID = result;
        //console.log("Initialized sessionID");
        //console.log(sessionID)
    }, function(err) {
        console.log(err);
    }).then(function(data_result){
    var initializePromise = set_data(path, body, sessionID);
    initializePromise.then(function(result) {
        data = result;
        return data
        }, function(err) {
            console.log(err);
        })
    })
}```

I am calling the method/function above from another file. I need to pass back the data variable once complete.

【问题讨论】:

  • 从此函数中返回您的promise,然后在“其他”文件中返回.then

标签: node.js function methods promise return


【解决方案1】:

你在用 Promise 搞砸了,最好简单地从你的 main 方法中返回一个 Promise 并使用 async/await 来处理 Promise 中的异步方法,相同的代码将是:

methods.sdata = function gather_data(path, body) {
    return new Promise(async (resolve, reject) => {
        try {
            const d = new Object();
            const intSessionResult = await initialize_session();                        // initialize session
            const { sessionID = '' } = intSessionResult;                                // get session id from init session result 
            const setDataResult = await set_data(path, body, sessionID);                // set session id
            resolve(setDataResult);                                                     // return data back to calling method
        } catch(err) {
            reject(err);                                                                // returns error in case any
        }
    });
}

然后你可以像使用 then 和 catch 一样调用它。希望这会有所帮助:)

【讨论】:

  • 感谢 Mohammed Amir Ansari,这非常有意义。非常感谢您的帮助。
  • 很高兴它有帮助......快乐编码;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
相关资源
最近更新 更多