javascript - 异步函数返回 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)
解决方案
三个问题:
getJSON()
不返回任何东西。它需要以return json;
.- 声明一个函数
async
会使其返回一个承诺。如果你想直接得到返回值而不是一个promise,你必须用await getJSON()
. 如果您从另一个异步函数调用它,您只能这样做。 - 您需要致电
response.json
:var json = response.json();
推荐阅读
- c# - 尝试使用 LINQ to SQL 创建节点树会产生 NotSupportedException
- c++ - 使用 __single_client_alloc 找到了一些旧代码 - 我该如何恢复它?
- c# - 如何实现具有公共属性但私有设置方法的多个接口?
- python - 从附近目录而不是从站点包中导入 Python 模块
- ios - iOS Swift:切换到耳机或从耳机切换时录音机中断
- python - 用标签替换字符串中的单词
- c# - 如何在 Linux 上的 .net 核心中获取系统规格
- mysql - Wordpress php_network_getaddresses: getaddrinfo failed: Temporary failure ,但其他与 mysql 连接的尝试工作正常
- java - AsyncTask 在调试时杀死 istelf 而没有任何错误消息
- php - 在调度器中调度 Laravel 作业,pre-5.5