处理函数内的异步调用

时间:2016-11-12 10:43:56

标签: javascript node.js promise

我有两个文件,其中one.js包含所有模块,而这些模块在two.js文件中调用。但每当我收到请求时,该函数都不会等待。我知道节点是异步的。有没有办法处理没有回调的功能

//File one.js
function getRequest(){
var url = "https://api.hasoffers.com/v3/Affiliate_Affiliate.json";
        request(url, function (err, reponse, value) {
            return JSON.parse(value);
        });
}
exports.getRequest = getRequest;

//File two.js
var one = require(one.js);
console.log(one.getRequest()); //Returns undefined  

我需要以相同的方式调用two.js文件中的函数one.getRequest();而不进行任何回调。

2 个答案:

答案 0 :(得分:0)

您需要使用承诺或回调

function getRequest(callback){
var url = "https://api.hasoffers.com/v3/Affiliate_Affiliate.json";
    request(url, function (err, reponse, value) {
        callback(JSON.parse(value));
    });
}

//文件two.js

var one = require(one.js);
one.getRequest(function(result){console.log(result)});

答案 1 :(得分:0)

您可以使用以下内容:

//File one.js
function getRequest(){
 this.url = "https://api.hasoffers.com/v3/Affiliate_Affiliate.json";

}
getRequest.prtotype.request=function() {
       request(this.url, function (err, reponse, value) {
        return JSON.parse(value);
    }); 
 });
 exports.getRequest = getRequest;



//File two.js
var one = require(one.js);
one=new one ();
 console.log(one.request());