在Node.js中的函数外部访问restAPI响应

时间:2018-10-23 11:54:56

标签: node.js

我想成为函数之外或nodejs循环之外的访问数组。我写了以下代码。

var result = [];
 function setid (swfid){
crud.getswift(swfid).then(function (response) {
    console.log("response",response);
    result = response;
    // res.send(response);
}).catch(function (err) {
    return ("error:" + err);
});
console.log("result",result);
}
console.log("result",result);

但是它返回null。请提出您的建议

2 个答案:

答案 0 :(得分:2)

您在函数调用中编写了一条新语句,因此将其作用域定为范围。这是那里的错误之一。除此之外,正如第一个评论此答案的人所述,您在这里有一个异步调用。因此,您需要从setid返回一个Promise,然后等待响应以获取结果。

答案 1 :(得分:1)

您正在将Aysnc逻辑与Sync混合使用。您不会在.then函数范围之外得到响应,因为在尝试获取结果时没有响应可用。

尝试在promise中使用回调-您需要在promise回调中调用该函数,并将响应作为函数param发送,然后使用数据。

> Promise / API call etc
.then(() => gotDataCallBack(data));

 gotDataCallBack(data){
 // handle your data and logic here.
 // this will make sure you have the data available before you move ahead with 
 your application/manipulation logic.
}