2016-11-02 2 views
0

Я использую новый API Fetch для извлечения объектов из API. Это мой код.Не удалось получить объект с помощью Promises

getUserYguid(){ 
    fetch(this.myapi, { 
    credentials: "include", 
    method: 'get', 
    headers: { 
     "Content-type": "application/x-www-form-urlencoded; charset=UTF-8" 
    }, 
    body: null 
    }).then(function(response){ 
    console.log(response.status) 
    console.log(response.json()); 
    let obj = response.text(); 
    console.log(obj.name); 
    }).catch(function(error){ 
    console.log('Request failed', error); 
    }); 
} 

Когда я называю response.status, он отлично работает, и я могу видеть сообщение о состоянии, как 200. Когда я называю response.json() или response.text(), я могу видеть полный объект является вернулся. Проблема в том, что следующая строка кода не работает. При попытке извлечь свойство из объекта, как

console.log(obj.name);

я, undefined

ответ

1

response.text() возвращает обещание, так что вы должны использовать then еще один раз

fetch(url, opts).then(function(response){ 
    response.text().then(function(txt){ 
    console.log(txt) 
    }) 
}) 

и по виду вашего obj.name использовать кажется, что вы хотите ответ json ... не текст, так что вам нужно сделать:

fetch(url, opts).then(function(response){ 
    response.json().then(function(obj){ 
    console.log(obj.name) 
    }) 
}) 

get является метод по умолчанию, поэтому нет необходимости указывать, что ... и клякса равно нулю, поэтому нет никакой необходимости в том, что либо ...

Смежные вопросы