响应在 .then() 中未准备好



我有一个函数,它返回一个最终返回数组的承诺。 在我的 .then 中,当我尝试访问数组中的第一个项目时,它仍然未定义。 当我记录时,响应是正确的,但是如果我访问其中的项目,则会失败。

myPromise().then((response)=>{
///consoles array
console.log(response);
//undefined
console.log(response[0]);
//consoles the item
setTimeout(function(){console.log(response[0])}, 1000);
}
baseCall( url ){
return new Promise((resolve, reject)=>{
request(url , (error, response, json) => {
if (!error && response.statusCode === 200) {
resolve(JSON.parse(json));  
} else {
reject("Error: Something wrong");
}
});
});
}
myPromise(){
let myReturn = [];
baseCall( 'sampleurl' ).then((response)=>{
response['valueNeed'].forEach(value =>{
let addValue = {};
addValue["someItem'] = value.someItem;
//.... add more stuff
myReturn.push(addValue);
}
}).then(()=>{
resole(myReturn);
});
}

正在解析的 JSON

{
"valueNeed":[
{"id": 1, "someItem": "someVal1"},
{"id": 2, "someItem": "someVal2"}
]
}

如何让它在没有超时的情况下工作?我认为 .then 方法在承诺解决之前不应该触发。

response将是HTTP响应对象,而不是数组。您可以尝试response.body。或者,与回调方法一样,body可以作为第二个参数传递,即

request().then((res, body) => { console.log(body) })

尝试将响应分配给另一个变量(如const tempvariable = response(,然后使用该时间变量访问数组,有时 react 会清理内存,这样奇怪的事情可能会发生。

最新更新