#javascript #arrays #function
Вопрос:
Какой метод существует без использования setTimeout (), чтобы разрешить сохранение данных из выборки в массиве stored_data, а затем разрешить функции тестирования манипулировать.
До сих пор я не определился.
let stored_data = []
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(response => response.json())
.then(json => stored_data.push(json))
function test(e) {
console.log(e)
}
Ответ №1:
Вы могли бы просто приковать другого .then
. Вы также забыли объявить store_data
в качестве переменной
let stored_data = []
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(response => response.json())
.then(json => stored_data.push(json))
.then( _ => {
// array now ready for manipulation
})
Комментарии:
1. спасибо за ответ, но я хочу получить доступ к stored_data вне функции.
2. Проблема в том, что ты не можешь. Либо вы соединяете его цепочкой
.then
, либо заключаете в асинхронную функцию и ждете извлечения. Это ваши два варианта.3. о, хорошо, спасибо, я понимаю, поэтому, если бы я хотел, чтобы другая функция использовала идентификатор stored_data, мне пришлось бы вызывать асинхронную функцию с a . затем внутри новой функции, которая хочет использовать stored_data.
4. Нет. Единственная причина, по которой вам нужно цепляться
.then
за выборку, заключается в том, что сама выборка асинхронна. Вы должны гарантировать , что к моменту вашего доступаstored_data
выборка уже разрешена, поэтому вы можете сделать это, обратившись толькоstored_data
к тому, когда выборка разрешена, что можно сделать с.then
помощью .