首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Javascript -将api json返回给变量,而不是console.log

Javascript -将api json返回给变量,而不是console.log
EN

Stack Overflow用户
提问于 2020-09-11 18:49:45
回答 4查看 82关注 0票数 0

这里完全是JS新手。我们的办公室使用HCL Leap构建表单,我需要编写一些javascript代码来填充表单。不幸的是,我遇到的所有示例都是将结果在线输出到console.log。我需要它真正被赋值给一个变量。下面是我一直在尝试使用的一些代码的示例,这些代码应该使用json输出填充表单文本区域:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var UserInfo = (async function getUserInfo() {
  var response = await fetch('https://jsonplaceholder.typicode.com/todos/1')
  console.log(response.json())
})();

item.setValue(UserInfo);

当我预览代码时,表单填充了"object Promise“。我认为这是代码编写方式的某种时间问题。有人有什么建议吗?

EN

回答 4

Stack Overflow用户

发布于 2020-09-11 19:06:00

Fetch返回一个Promise而不是response。稍后可以将响应解析为纯文本或json (就像您所做的那样)。问题是response.json()也会返回一个Promise。所以在response.json()之前你需要等待。完整的代码应该是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var UserInfo = await (async function getUserInfo() {
  try{
    var response = await fetch('https://jsonplaceholder.typicode.com/todos/1')
    var jsonResponse = await response.json()
    return jsonResponse
  }
  catch(e){
    console.error(e)
  }
})();
item.setValue(UserInfo);

或者在一行中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var UserInfo = await (await fetch('https://jsonplaceholder.typicode.com/todos/1')).json()
if(UserInfo)
  item.setValue(UserInfo)

每当使用async/await时,都应该始终将其包装在try/catch块中,因为它可能会返回错误而不是结果

票数 0
EN

Stack Overflow用户

发布于 2020-09-11 19:07:45

你需要await所有的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var UserInfo = (async function getUserInfo() {
  var response = await fetch('https://jsonplaceholder.typicode.com/todos/1')
  // ``.json` also returns a promise, so use `await` to reference the actual result
  const data = await response.json()
  console.table(data)

  // Since this variable comes from a function expression, explicitly return 
  // `response.json()` to set the final value as intended
  return data
})();

item.setValue(await UserInfo);

如果主执行上下文(使用item.setValue)不在async函数中,那么为了使用await来设置item.value(),您必须用异步生命周期对其进行包装。

关键字await仅在异步函数内部有效。如果你在异步函数体之外使用它,你会得到一个SyntaxError。Source: MDN

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(async () => {
  
  var UserInfo = await (async function getUserInfo() {
    var response = await fetch('https://jsonplaceholder.typicode.com/todos/1')
    // ``.json` also returns a promise, so use `await` to reference the actual result
    const data = await response.json()
    console.table(data)

    // Since this variable comes from a function expression, explicitly return 
    // `response.json()` to set the final value as intended
    return data
  })();

  item.setValue(UserInfo);
})();

如果您需要避免在上面的作用域中使用async包装器,这里有另一种方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Simplify this method, not an IIFE any more
async function getUserInfo() {
  var response = await fetch('https://jsonplaceholder.typicode.com/todos/1')
  const data = await response.json()
  
  console.table(data)
  return data
};

// This part doesn't need to exist inside an async function
getUserInfo()
  .then((info) => item.setValue(info))
  .catch((err) => console.error(err))
票数 0
EN

Stack Overflow用户

发布于 2020-09-11 19:09:45

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const UserInfo =  async () => {
  const response = await 
  fetch('https://jsonplaceholder.typicode.com/todos/1');
  return response.json();
};

UserInfo().then(data => {
  console.log(data)
  //set data to field
  //item.setValue(data)
}).catch(error => {
  throw error
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63852719

复制
相关文章
从误差分析到通用对比分析模板终极方案
本文会带领大家从零开始理解这个过程,一步步来思考和优化整个方案,最终得到可以复制使用的模板。
BI佐罗
2022/04/02
3760
从误差分析到通用对比分析模板终极方案
从 gitlab 事件中吸取的教训
题注:这是一篇去年的文章,今早看到 gitlab 运维人员愚蠢地 rm -rf, 心有戚戚焉,故而重发这篇文章,供大家参考。 ---- 这两天不是很太平,程序圆媛猿亲们出门前最好拜拜祖师爷 Ada,然
tyrchen
2018/03/29
9580
从 gitlab 事件中吸取的教训
分析kubernetes中的事件机制
我们通过 kubectl describe [资源] 命令,可以在看到Event输出,并且经常依赖event进行问题定位,从event中可以分析整个POD的运行轨迹,为服务的客观测性提供数据来源,由此可见,event在Kubernetes中起着举足轻重的作用。
silenceper
2020/03/08
1.7K0
分析kubernetes中的事件机制
在nodejs中事件循环分析
在上一篇文章在chromev8中的JavaScript事件循环分析中分析到,在chrome中的js引擎是通过执行栈和事件队列的形式来完成js的异步操作。然而在node中,事件循环表现出的状态与浏览器中大致相同。不同的是node中有一套自己的模型。node中事件循环的实现是依靠的libuv引擎。我们知道node选择chrome v8引擎作为js解释器,v8引擎将js代码分析后去调用对应的node api,而这些api最后则由libuv引擎驱动,执行对应的任务,并把不同的事件放在不同的队列中等待主线程执行。 因此实际上node中的事件循环存在于libuv引擎中。
Yerik
2022/04/11
4K0
backbonejsView中事件绑定源码分析
其实上下文是接上一篇的,因为自己不理解backbone view中的事件绑定所以掉到了自己挖的一个坑里,调了两个晚上。把backbone view部分的代码看了之后才明白。
the5fire
2019/02/28
6900
weex-27-通用事件
如上示例中定义的单击事件方法tap中,如果不传递参数,即使用默认参数的情况,系统会自动传递如下对象当成方法的参数
酷走天涯
2018/09/14
8410
weex-27-通用事件
WordPress 技巧:从搜索结果中排除页面
默认情况下,WordPress 搜索结果显示发布的文章和页面,如果想把页面从 WordPress 搜索结果中排除,可以在当前主题的 functions.php 文件中添加如下的函数:
Denis
2023/04/13
4790
分析React源码中的合成事件
React事件就是在组件中调用的onClick这种写法的事件。上面分为5个函数写,主要是区分不同的事件注册逻辑,但是最后都会添加到allNativeEvents的Set数据结构中。
goClient1992
2022/12/14
7090
通用电气如何从数据中创收10亿
点击标题下「大数据文摘」可快捷关注 作者: Heather Clancy 摘自:财富中文网 该公司现在为各种联网工业设备提供预测性维护与优化服务,这些设备类型广泛,医学成像系统、机车、喷气发动机均囊括在内,价值总计超过1万亿美元。 一个四四方方、矮墩墩的机器人按照指令在台上碎步疾行,然后在一个巨大的机车发动机模型旁边停了下来。 它的传感器在探测周围环境,收集温度信息并进行分析。检测到某一数据过高时,它便呼叫一位现场服务人员前来帮助。在它的人类同事到达后,机器人将报告发送到此人佩戴的智能眼镜上,交给他一
大数据文摘
2018/05/22
7400
音频系统噪声源分析及排除方法
  在录音扩声或音频传输过程中噪声是具有一定频率的纹波电压通过电源线路窜入音频设备的供电回路,普遍存在又非常令人头痛和不易解决。通常组成音频设备的设备越多或信号传输距离越长,系统的噪声就越大;甚至使得音频系统无法进行正常的录音或扩声工作。音频系统噪声形成的机理较为复杂,针对系统噪声产生的主要原因和解决办法尤其重要。
心跳包
2020/08/31
9040
从扫码登录的原理分析QQ大量被盗事件
6 月 26 号晚上,大量 QQ 被盗的新闻一度冲上微博热搜。很多人反映自己的 QQ 不受控制地发送大量违规图片。
CoderW
2022/07/13
2.4K0
从扫码登录的原理分析QQ大量被盗事件
深度分析React源码中的合成事件
React事件就是在组件中调用的onClick这种写法的事件。上面分为5个函数写,主要是区分不同的事件注册逻辑,但是最后都会添加到allNativeEvents的Set数据结构中。
goClient1992
2022/09/30
8800
浏览器实验中的故障排除
https://webrtchacks.com/troubleshooting-unwitting-browser-experiments-al-brooks/
LiveVideoStack
2021/09/01
2.7K0
entity framework不查数据库修改或排除指定字段集合通用方法
其中DataDBEntities为数据库实体对象,代码如下: 下载地址:http://files.cnblogs.com/stone_w/EFDBHelper.zip using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using System.Data.Objects.DataClasses; public class EFDBHelpe
磊哥
2018/05/08
8200
Autodesk基于Mesos的通用事件系统架构
【编者按】本文由Autodesk Cloud软件架构师Olivier Paugam撰写,解释了如何集合Mesos、Kafka、RabbitMQ、Akka、Splunk、Librato、EC2等基础设施解决实际问题。此外,以如此小规模的团队解决问题确实令人赞叹。 以下为分享原文: 数月前分到了一项新的任务:做一个集中事件系统(central eventing system),允许各个后端彼此通讯——包括动态流式(activity streaming)后端、渲染、数据转换、BIM、日志报告、分析等等。最终确定,
CSDN技术头条
2018/02/09
9300
Autodesk基于Mesos的通用事件系统架构
zepto 事件分析4(事件队列)
前面分析了zepto的事件绑定,接下来分析事件解绑,先看一下zepto中解绑的off方法:
菜的黑人牙膏
2019/01/21
5480
linux中grep如何排除过滤输出总结
grep 是一种强大的命令行工具,用于在一个或多个输入文件中搜索与正则表达式匹配的行并将每个匹配的行写入标准输出。 排除单词和模式 要仅显示与搜索模式不匹配的行,请使用-v( 或--invert-match) 选项。 例如,要打印不包含nologin行: > grep -wv nologin /etc/passwd root:x:0:0:root:/root:/bin/bash git:x:994:994:git daemon user:/:/usr/bin/git-shell myfreax:x:1000
入门笔记
2022/06/02
2.3K0
linux中grep如何排除过滤输出总结
grep 是一种强大的命令行工具,用于在一个或多个输入文件中搜索与正则表达式匹配的行并将每个匹配的行写入标准输出。 排除单词和模式 要仅显示与搜索模式不匹配的行,请使用-v( 或--invert-match) 选项。 例如,要打印不包含nologin行: > grep -wv nologin /etc/passwdroot:x:0:0:root:/root:/bin/bashgit:x:994:994:git daemon user:/:/usr/bin/git-shellrumenz:x:1000:100
玖柒的小窝
2021/10/21
2.9K0
深度分析React源码中的合成事件2
React事件就是在组件中调用的onClick这种写法的事件。上面分为5个函数写,主要是区分不同的事件注册逻辑,但是最后都会添加到allNativeEvents的Set数据结构中。
goClient1992
2023/01/04
6420
在chromev8中的JavaScript事件循环分析
JavaScript从诞生之日起就是一门单线程的非阻塞的脚本语言。这是由其最初的用途来决定的:与浏览器交互。
Yerik
2022/04/09
4K0

相似问题

在通用分析中不使用推荐排除

10

通用分析中的事件跟踪

20

GTM通用分析事件不会出现在中。

10

如何使用通用分析跟踪Jwplayer视频事件?

10

分析:测试事件没有出现-如何排除故障?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文