0

const URL = 'https://jsonplaceholder.typicode.com/users'

const request = (method, url, body = null) =>{ return fetch(url, { method: method, body: body }).then(request => { return request.json() }) }

a = request('GET', URL).then(data =>{ return data })

console.log(a )

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script src="fetch.js"></script>
</body>
</html>
Siparat
  • 69

1 Answers1

1

fetch это асинхронный метод который возвращает Promise. Соответственно код ,который идёт после вашего вызова функции request, сработает раньше, чем сам request. Поэтому делайте либо так

const URL = 'https://jsonplaceholder.typicode.com/users'

const request = (method, url, body = null) =>{ return fetch(url, { method: method, body: body }).then(request => { return request.json() }) } request('GET', URL).then(data =>{ let a=data; console.log(data) })

Либо так

const URL = 'https://jsonplaceholder.typicode.com/users'

const request = (method, url, body = null) =>{ return fetch(url, { method: method, body: body }).then(request => { return request.json() }) }

const start = async ()=>{ let a = await request('GET', URL) console.log(a) } start()

HTO HOT
  • 1,333
  • Тогда я могу использовать этот объект только внутри метода then – Siparat Aug 08 '22 at 15:07
  • @Siparat именно. Ну или как я вам показал при помощи async/await. – HTO HOT Aug 08 '22 at 15:10
  • Но за методом его использовать не возможно? – Siparat Aug 08 '22 at 17:00
  • @Siparat, возможно использовать только в функции start. Но ничто вам не мешает всё необходимое обернуть в эту функцию старт или же поместить внутрь then – HTO HOT Aug 08 '22 at 17:02