Estoy aprendiendo sobre el método de búsqueda en Javascript y cuando digo
fetch.("url").then(r => {if(r.status!==200)doSomething();} )
y cuando paso el mouse sobre "buscar", dice que devuelve Promise<Response> , y el parámetro r en la función en "then" es una Respuesta.
Mi pregunta es: ¿qué significa el tipo en <>? Sé que en C++ representa una plantilla, en este caso una clase, pero ¿cómo sabe la función que el parámetro "r" es una respuesta?
Su IDE lo ayudó a inferir que el tipo de respuesta de la función de fetch es Promise<Response> y <> es la forma de pasar tipos genéricos de TypeScript. Para conocer el tipo de Response , consulte https: //developer.mozilla.org/en-US/docs/Web/API/Response
De hecho, esta es solo una forma en que el IDE ayuda a escribir JavaScript. Si desea una verificación de tipo estricta, use TypeScript.
¿Qué representa Reponse en Promise en Javascript?
Nada. Promise<Response> no es una sintaxis Javascript válida, por lo que no significa nada.
Cuando paso el cursor sobre "buscar", dice que devuelve Promesa, y el parámetro r en la función en "entonces" es una Respuesta... Mi pregunta es: ¿qué significa el tipo en <>?
El lenguaje de programación javascript en sí mismo no viene con un editor o IDE. La mayoría de la gente escribe javascript en su editor de texto favorito. Deberá consultar la documentación de su editor de código o IDE para saber qué significa la ventana emergente.
Sin embargo, podemos adivinar lo que significa. <> no es una sintaxis javascript válida, por lo que el programador que desarrolló el editor de código probablemente se inspiró en C++/Java. Supongo que significa lo mismo en C++/Java, siendo que la Promesa es una plantilla/genérica (no está realmente en javascript ya que no existe tal cosa) si lo miras desde el punto de vista de un programador de C++/Java view y se compilará en un objeto cuyo método .then() espera una función cuyo argumento sea del tipo <> (similar a Futures en C++ y Java).
¿Cómo sabe la función que el parámetro "r" es una Respuesta?
No es asi. El programador que escribió la interfaz Promise espera que pases una función que acepte un argumento para su método .then() . El código del programador luego llamará a la función que le pasas a .then() y le pasará el objeto Response .
Aquí hay un ejemplo. Déjame escribir esta función simple:
function sayHello (formatter) { console.log(formatter("Hello World")); }Ahora usemos la función anterior:
sayHello(h => { return "This is a " + h.toUpperCase() + " program"; }) // output = This is a HELLO WORLD program Su pregunta es ¿cómo sabe la función sayHello que el parámetro h es una cadena cuyo valor es "Hello World"?
La respuesta es simple, es porque yo, el programador que escribió la función sayHello() , te la paso.
¿ Cómo sabrías que h es la cadena "Hello World"? Bueno, con suerte habría escrito alguna documentación en alguna parte para que la leas.
Entonces, ¿cómo sabrías cuál es el valor de r en tu código? Debe leer la documentación: https://developer.mozilla.org/en-US/docs/Web/API/fetch . Específicamente la primera oración en el segundo párrafo:
La promesa se resuelve en el objeto Response que representa la respuesta a su solicitud.