我想成为函数之外或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。请提出您的建议
答案 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.
}