При вызове функции, которая возвращает обещание, возвращается как undefined , если асинхронные операторы не удалены, затем возвращает ZoneAwarePromise, но не содержит данных.
Я знаю, что запрос возвращает данные, когдафункция выполняется, однако она, похоже, не передает эти данные фактической возвращаемой части вызова функции.
Я рассмотрел несколько вопросов стека, которые не ответили на этот вопрос, включая этот вопрос: Async/ Await with Request-Promise возвращает Undefined
При использовании конечной точки REST для извлечения данных console.logs действительно показывает, что данные верны, однако возврат возвращается как неопределенный
this.allPeople.forEach(async person => {
const dodString = await this.getRelatedRecords(person); //undefined
}
Это основная функция, которая возвращает обещание / данные
async getRelatedRecords(person) {
// function truncated for clarity
// ...
//
console.warn('This async should fire first');
selPeopleTable.relationships.forEach(relationship => {
allRelationshipQueries.push(
arcgisService.getRelatedTableData(
selPeopleTable.url, [person[oidField.name]], relationship.id, relationship.name),
);
});
await Promise.all(allRelationshipQueries).then(allResults => {
console.log('Inside the Promise');
// The Specific node I am looking for
const data = allResults[1].results.relatedRecordGroups[0].relatedRecords[0].attributes.dod;
console.log(data); // Shows correctly as the data I am looking for
return data;
}).catch(function(data){
console.log('there might be data missing', data);
});
}
Удаление операторов ASYNC приводит к срабатыванию getRelatedRecords()
после содержащей функции и / или возвращению 'ZoneAwarePromise', который не содержит данных,Мне нужно getRelatedRecords()
сначала запустить, а затем запустить остальную часть кода.
Я могу предоставить больше фрагментов, если это будет необходимо.
Zone Aware Promise
Когда асинхронные операторы (я думаю) настроены правильно