【发布时间】:2020-05-05 06:40:20
【问题描述】:
我有一个函数返回一个最终返回一个数组的承诺。在我的 .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 方法在承诺解决之前不会触发。
【问题讨论】:
-
你使用的是 'fetch' API 还是 axios ?
-
@Sohail 我现在正在使用请求。
标签: javascript arrays promise