Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

422
Views
¿Cuál es la diferencia entre .catch y .fail en jQuery?

El documento corto para .fail dice:

Agregue controladores para que se llamen cuando se rechace el objeto Diferido.

y el documento abreviado para .catch es exactamente el mismo:

Agregue controladores para que se llamen cuando se rechace el objeto Diferido.

Fuente: http://api.jquery.com/category/deferred-object/

Los argumentos aceptados por los dos métodos parecen ser diferentes, y el documento de .catch establece que .catch es un alias de .then(null, fn)

¿Hay casos en los que debo usar .fail y otros en los que debo usar .catch ?

O... si solo tengo una función... ¿los siguientes comandos son intercambiables y solo existen por compatibilidad/razones históricas?

 a) .fail(fn) b) .catch(fn) c) .then(null, fn)

Creé un jsFiddle:

https://jsfiddle.net/sq3mh9j5/

Si hay una diferencia, ¿podría proporcionar algunos ejemplos ya que soy nuevo en jquery y aún no estoy familiarizado con todos los términos de promesa?

¿Por qué el documento de .catch no hace referencia al documento de .fail y aclara la diferencia/similitud?

Editar Encontré algunas notas en las notas de la versión 3.0 que el comportamiento de .then cambió. https://blog.jquery.com/2015/07/13/jquery-3-0-and-jquery-compat-3-0-alpha-versions-released/ Sin embargo, todavía no estoy seguro de cuándo usar .fail y cuándo para usar .catch.

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

catch y fail son ligeramente diferentes, en el sentido de que catch devolverá una nueva promesa (resuelta), mientras que fail devolverá la promesa original.

 // This will only output "fail" $.Deferred() .reject(new Error("something went wrong")) .fail(function() { console.log("fail"); }) .then(function() { console.log("then after fail"); })
 // This will output "catch" and "then after catch" $.Deferred() .reject(new Error("something went wrong")) .catch(function() { console.log("catch"); }) .then(function() { console.log("then after catch"); })

Tenga en cuenta que catch(fn) es un alias de then(null, fn) .

about 4 years ago · Santiago Trujillo Report

0

Así que creo que la principal diferencia es lo que obtienes de cada uno.

Una captura le permite ejecutar una sola función.

Una falla le permite ejecutar una serie de funciones.

Aparte de eso, estoy de acuerdo con tus hallazgos. Ellos son muy similares.

Agregué un código de ejemplo para mostrar cómo el error ejecutará ambas funciones, y la captura solo ejecutará una.

 $.ajax({ url: "abc" }).done(function (data) { }).fail(function () { alert("a"); }, function () { alert("b"); }) .catch(function () { alert("c"); }, function () { alert("d"); });

Si ejecuta esto, obtiene 'a', 'b', 'c' y luego 'd' no se ejecuta.

Espero que este simple ejemplo muestre la diferencia.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!