我从JS开始,实际上喜欢异步方面(来自Python),但我不确定为什么有些函数返回Promise。具体来说,下面使用getch
的代码让我想知道json()
返回了什么:
fetch('https://freegeoip.net/json/8.8.8.8')
.then((response) => {
return response.json()
})
.then((json) => {
Object.keys(json).forEach((key) => {
console.log("got " + key)
})
})
除了流之外,我们在get
之后得到的HTTP响应是一个文本块,客户端稍后会对其进行解释,以提取标题、正文和其他有趣的元素,作为HTTP内容分析的一部分。
关键是这个文本块是一块的,所以第一个然后是()
已经有了整个响应——为什么JSON主体的解析是异步操作,不同于第二个中的
?foreach
>然后()
换句话说,为什么我不能让下面的代码工作?
fetch('https://freegeoip.net/json/8.8.8.8')
.then((response) => {
Object.keys(response.json()).forEach((key) => {
console.log("got " + key)
})
})
注意:如果第一个代码没有正确运行,请尝试禁用您的adblocker(使用ERR\u-BLOCKED\u-BY\u-CLIENT
)。第二个是故意不正确的。
你说得对——两个片段都做同样的事情。在第一段,以下部分:
.then((response) => {
return response.json()
})
只是在第一步中处理响应并传递结果。这个简单的案例不需要将其分为两个步骤,所以您可以轻松地使用第二个示例。
在某些情况下,它可能很有用。
您的第二个代码段不起作用,因为响应。json()
akabody。json()
不会立即解析。
这是因为正文。JSON()
流
和使用
响应;然后必须由Promise
异步返回然后()
回调捕获,以便读取/操作。
这就是Promises
的本质。
然而,这种语法流仍然可以通过利用async
await
来实现。
fetch('https://freegeoip.net/json/8.8.8.8')
.then(async (response) => {
Object.keys(await response.json()).forEach((key) => {
console.log("got " + key)
})
})
我最近一直在摆弄api,并注意到一些有点古怪的东西。 返回一个对象。http://jsbin.com/wofulo/2/edit?js输出 但是,如果写为: 这里是一个标准的,您可以访问title属性 所以我的问题是:为什么在对象文本中返回一个promise,但是如果刚刚返回,则返回值?
问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 如何从PHP的MySql响应中“回显”“资源ID#6”? 我是php和SQL的新手,我正在尝试使php页面列出表中的枚举数。我正在使用此代码,但它返回资源ID#2: 问题答案: 因为执行时会获得mysql资源。 使用类似的方法来获取下一行。它返回一个以列名作为索引的数组。就您而言,可能是。 这是您的代码段的修复程序和一些小改进:
我正在尝试使用废料并遇到一些问题。问题是我的脚本返回重复的结果。我正在尝试从父页面抓取URL,并按照每个单独的URL获取关联的日期。抓取每个嵌套的URL后,它似乎会再次从父页面输出URL列表。 下面是脚本: 下面是 json 输出: 重申一下,我很难从父页面输出一个url列表,从每个单独的嵌套URL输出一个相应的日期列表。我是scrapy和python的新手,所以希望有人能给我指出正确的方向。
如果用非空数组调用promise.all或promise.race,它们将返回一个挂起的promise: 为什么promise。所有功能都是这样设计的?似乎没有很好的理由不一致,但也许我错过了什么。
可能的重复: 在JavaScript中Deferred、Promise和Future之间有什么区别? 有人能指出回调和promise之间有什么不同吗?什么时候应该使用promise等? 此外,关于如何创建和使用promise的链接将得到赞赏。
line.FlatMap(WordSutil::GetWords)是方法引用中错误的返回类型: 编码方法: