获得promiseValue

时间:2018-07-18 05:58:11

标签: javascript google-chrome post fetch-api

是JavaScript的新手,我想获取 promiseValue 中的值,该值是在 POST 之后生成的。正在连接的API带来了一个json对象,如下所示:

{
    "message": "User logged in successfully",
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MzE4NTA2ODcsImlhdCI6MTUzMTg0ODg4NywidXNlcm5hbWUiOiJ5b3VxQGdtYWlsLmNvbSJ9.oTwcHkW64RS7ooz5_dzrmlvflI4Eg2Y39hGM0D-wZkY"
}

但是在谷歌浏览器中,它作为 PromiseValue 接受,因此我的目标是从中获取或打印 message token promiseValue

下面是显示我得到的 promiseValue 的图片:

the output

下面是到目前为止的代码:

fetch('https://xxxxxx.xxxxxxxx',
    {
        method: 'POST',
        headers: {
            'Accept': 'application/json,text/plain,*/*',
            'Content-type': 'application/json'
        },
        body: JSON.stringify({
            username: username,
            password: password
        })

    }).then((res) =>{
        if(res.status=='401'){
            console.log(res.status)
            console.log(res.json())
            alert("Sorry please, invalid username or password.");
        }
        else if (res.status='200')
        {
            console.log(res.status)
            console.log(res.json())

        }
    })
    .then((data) => {
        console.log(" my data :   "+data)
      })

2 个答案:

答案 0 :(得分:2)

res.json()返回一个承诺。您需要从第一个then处理程序返回它,以便在第二个then处理程序中使用它:

fetch(...)
  .then(res => {
    if (res.status == '401') {
      ...
    } else if (res.status = '200') {
      ...
    }

    return res.json(); // <-- Add this return call
  })
  .then(res => {
    console.log(" my data :   " + res);
    console.log(res.token, res.message); // <-- Access the response keys here
  });

答案 1 :(得分:0)

fetch(...)
 .then(res => {
    if (res.status == '401') {
      throw 'Some error message'; // <-- Add this throw exeption
      ...
    } else if (res.status = '200') {
      ...
    }

   return res.json(); // <-- Add this return call 
   })
   .then(res => {
      console.log(" my data :   " + res);
      console.log(res.token, res.message); // <-- Access the response keys here
   })
   .catch(e => console.error(e)) // <-- Catch your errors here