javascript - Promise 中 Reponse 代表什么在 Javascript 中?
问题描述
我正在学习 Javascript 中的 fetch 方法,当我说
fetch.("url").then(r => {if(r.status!==200)doSomething();} )
当我将鼠标悬停在“fetch”上时,它说它返回Promise<Response>
,并且“then”中函数中的 r 参数是一个响应。
我的问题是: <> 中的类型是什么意思?我知道在 C++ 中它代表一个模板,在这种情况下是一个类,但是函数如何知道“r”参数是一个响应?
解决方案
Reponse 在 Javascript 的 Promise 中代表什么?
没有什么。Promise<Response>
不是有效的 Javascript 语法,所以它没有任何意义。
当我将鼠标悬停在“fetch”上时,它表示它返回 Promise,而“then”中函数中的 r 参数是一个响应......我的问题是:<> 中的类型是什么意思?
javascript 编程语言本身不附带编辑器或 IDE。大多数人在他们最喜欢的文本编辑器中编写 javascript。您需要查看代码编辑器或 IDE 的文档以了解弹出窗口的含义。
但是我们可以猜到它的含义。<>
不是有效的 javascript 语法,因此开发代码编辑器的程序员可能从 C++/Java 中获得灵感。我的猜测是它在 C++/Java 中的意思是一样的——如果你从 C++/Java 程序员的角度来看,Promise 是一个模板/泛型(它不是真的在 javascript 中,因为没有这样的东西)视图,它将编译为一个对象,该对象的.then()
方法需要一个参数为 in 类型的函数<>
(类似于 C++ 和 Java 中的 Futures)。
函数如何知道“r”参数是响应?
它不是。编写 Promise 接口的程序员希望您将一个接受一个参数的函数传递给它的.then()
方法。然后,程序员的代码将调用您传递给的函数.then()
并将对象传递给它Response
。
这是一个例子。让我写这个简单的函数:
function sayHello (formatter) {
console.log(formatter("Hello World"));
}
现在让我们使用上面的函数:
sayHello(h => {
return "This is a " + h.toUpperCase() + " program";
})
// output = This is a HELLO WORLD program
您的问题是sayHello
函数如何知道h
参数是一个值为“Hello World”的字符串?
答案很简单,因为我,写函数的程序员sayHello()
,把它传给了你。
你怎么知道那h
是字符串“Hello World”?好吧,希望我会在某处写一些文档供您阅读。
那么你怎么知道r
你的代码中的价值是什么?您需要阅读文档:https ://developer.mozilla.org/en-US/docs/Web/API/fetch 。特别是第二段的第一句话:
承诺解析为代表对您的请求的响应的 Response 对象。
推荐阅读
- java - 如何调用 maven-resources-plugin 然后 exec-maven-plugin 然后再调用 maven-resources-plugin
- javascript - 获取锚标记的文本并将其显示在 html 标记中
- http - SocketException: Connection failed (OS Error: Network is unreachable, errno = 101), address = 18.191.190.195, port = 80
- ios - 在全局 swift 文件中添加警报控制器?
- entity-framework - Cognos 框架加入问题
- android - 具有不同包名称的 Android 应用程序无法安装在同一设备上。
- c++ - 使用透明 std 函数对象时,我们还需要写空尖括号吗?
- javascript - 增加突出显示区域的大小的问题
- javascript - 使用 JavaScript 将十六进制转换为 Windows-1251
- android - 带有构造器的房间类型转换器