承诺对象未返回值

时间:2019-02-06 18:52:55

标签: javascript ajax axios

我正在尝试获取asset的值:

const asset = getAssetInformation(11002);

function getAssetInformation(id) {
    return axios({
        method: 'GET',
        url: "/asset-information",
        params: {assetId: id}
    });
}

console.log(asset);

结果是:

[object Promise]

如何从请求中获取返回值?

3 个答案:

答案 0 :(得分:0)

您将需要使用.then函数。

const asset = getAssetInformation(11002)
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

答案 1 :(得分:0)

使用asyncawait是一种实用的方法-

function axios(query) { // fake axios, for demo
  return new Promise (r =>
    setTimeout(r, 1000, { asset: query.params.assetId })
  )
}

function getAssetInformation(id) {
  return axios({
    method: 'GET',
    url: "/asset-information",
    params: {assetId: id}
  })
}

async function main() { // async
  const asset = await getAssetInformation (11022) // await
  console.log(asset)
}

main()
// 1 second later ...
// { asset: 11022 }

答案 2 :(得分:-1)

承诺返回了另一个承诺。

解压缩和处理承诺的方法是通过.then()函数,该函数将在承诺返回后运行。

const asset = getAssetInformation(11002);

function getAssetInformation(id) {
    return axios({
        method: 'GET',
        url: "/asset-information",
        params: {assetId: id}
    });
}

这里的资产是一个承诺,您想在其上使用a来获取价值。

而不是..

const asset = getAssetInformation(11002);

使用

getAssetInformation(11002)
.then((response) => {
//What you returned will be here, use response.data to get your data out.

} )
.catch((err) => {
//if there is an error returned, put behavior here. 
})