У меня есть функция, которая возвращает обещание, которое в конечном итоге возвращает массив. В моем .hen, когда я пытаюсь получить доступ к своему первому элементу в массиве, он все еще не определен. Когда я регистрируюсь, ответ корректен, но если я получаю доступ к элементам внутри, это терпит неудачу.
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"}
]
}
Как мне заставить это работать без таймаута? Я думал, что метод затем не предполагал срабатывать, пока обещание не будет выполнено.