首页 > 解决方案 > 异步函数返回 Promise 挂起

问题描述

我不明白为什么我得到了Promise { <pending> },因为我使用了 async/await

这是我的代码

const  fetch = require("node-fetch")

function getRandomPokemon() {
    var pokemonID = Math.floor(Math.random() * 851);
    console.log("The Pokemon Id is " + pokemonID);
    return pokemonID
}

async function getJSON() {
    let response = await fetch('https://pokeapi.co/api/v2/pokemon/'+ pokemonID);
    var json = await response.json
}

var pokemonID = getRandomPokemon()
var json = getJSON()
console.log(json)

标签: javascriptnode.jsasync-awaites6-promise

解决方案


三个问题:

  1. getJSON()不返回任何东西。它需要以return json;.
  2. 声明一个函数async会使其返回一个承诺。如果你想直接得到返回值而不是一个promise,你必须用await getJSON(). 如果您从另一个异步函数调用它,您只能这样做。
  3. 您需要致电response.jsonvar json = response.json();

推荐阅读