我一直在遵循一个教程,并遇到了以下代码片段:
const myAsyncFunction = async () => {
const usersResponse = await fetch(
'https://jsonplaceholder.typicode.com/users'
)
const userJson = await usersResponse.json();
const secondUser = userJson[1];
console.log(secondUser);
const posts = await fetch (
'https://jsonplaceholder.typicode.com/posts?userId=' + secondUser.id
);
const postsJson = await posts.json();
console.log(postsJson);
}
myAsyncFunction();
响应到JSON对象的转换不应该立即发生吗?从数组(例如userJson[1]
中获取值的方法也应该如此吗?为什么需要等待用户响应。json()和帖子。json()
?
在初始的finch()
调用之后,只读取了标头。因此,要将正文解析为JSON,首先必须从传入的流中读取正文数据。而且,由于从TCP流读取是异步的,所以. json()
操作最终是异步的。
注意:JSON本身的实际解析不是异步的。只是从传入流中检索数据是异步的。
问题内容: 为什么将AJAX称为异步?它如何完成与服务器的异步通信? 问题答案: 它是异步的,因为它不会锁定浏览器。如果您触发Ajax请求,则用户在等待响应时仍可以工作。当服务器返回响应时,将运行一个回调来处理它。 您可以根据需要进行同步,如果需要,可以在请求未完成时将浏览器锁定(因此,大多数情况下这是不合适的)
所以我理解为什么从异步返回空洞通常没有意义,但我遇到了一种我认为完全有效的情况。请考虑以下人为的示例: 我意识到这是一个不寻常的例子,但我试图使其简单化和更普遍化。有人能向我解释为什么这是可怕的代码,以及我如何修改它以正确遵循约定吗? 谢谢你的任何帮助。
我最近一直在摆弄api,并注意到一些有点古怪的东西。 返回一个对象。http://jsbin.com/wofulo/2/edit?js输出 但是,如果写为: 这里是一个标准的,您可以访问title属性 所以我的问题是:为什么在对象文本中返回一个promise,但是如果刚刚返回,则返回值?
下面JavaScript代码的目的是从随机用户生成器获取数据,并将JSON结果打印到控制台中。在声明后调用函数时,它返回为“未定义”。 为什么这个异步函数返回为未定义,而不是将fetch方法的结果打印到控制台?
问题内容: 语法的哪一部分提供了该函数应在其他线程中运行并且是非阻塞的信息? 让我们考虑一下node.js中的简单异步I / O 是什么使它在后台发生的呢?任何人都可以准确地解释它,还是可以粘贴指向一些好的资源的链接?我到处看的地方都有很多关于什么是回调的信息,但是没有人解释为什么它实际上如此工作。 这不是关于node.js的特定问题,而是关于每种编程语言中回调的一般概念。 编辑: 我提供的示例可
然而,在我下面的代码中,我希望在这两个示例中都花费相同的15秒(每个任务5秒),如本文所述。然而,第二个示例只需要5秒,同时运行所有3个示例也需要5秒来完成第二个示例。原来的文章花了5秒,但我把它改成了1秒的延迟,让它更明显。 有没有人能解释一下这是怎么回事,为什么它看起来像线程一样运行?