javascript - first - title case jquery
Promesa: luego vs luego+captura (2)
En su código actual, actúan igual porque
console.log(''success'');
No fallará.
Sin embargo, si escribes algo como esto ...
myPromise.then(function() {
// Some error may happen
throw(''An exception that would be caught'');
}).catch(function() {
console.log(''error'');
});
// Is the same as this, the errHandle tries to catch any unhandled error
// from previous result.
myPromise.then(func, null).then(null, errHandle);
myPromise.then(function() {
// Some error may happen
throw(''An unhandled exception.'');
}, function() {
// This won''t log the error if it happens in the
// some error may happen block.
console.log(''error'');
});
// Is the same as this, the errHandle will handle errors from previous result,
// but it won''t handle errs in func.
myPromise.then(func, errHandle)
La segunda forma no puede detectar ese error, mientras que la primera puede.
Fragmento para prueba:
// An function that may error and throw exception.
function funcThatThrows(test) {
throw(`oops - error in test ${test}`);
}
function errHandler(exception) {
console.log(''We got an exception: '', exception);
}
// Expect: We got an exception: oops - error in test 1
Promise.resolve(1).then(funcThatThrows).catch(errHandler);
// Is the same as below, the errHandler tries to catch any unhandled error
// from previous result.
// Expect: We got an exception: oops - error in test 2
Promise.resolve(2).then(funcThatThrows, null).then(null, errHandler);
// If put the function and handler in the same then, the exception won''t be caught.
// Expect: Uncaught (in promise) oops - error in test 3
Promise.resolve(3).then(funcThatThrows, errHandler);
Esta pregunta ya tiene una respuesta aquí:
¿Hay alguna diferencia entre los 2 siguientes códigos?
myPromise.then(function() {
console.log(''success'');
}).catch(function() {
console.log(''error'');
});
myPromise.then(function() {
console.log(''success'');
}, function() {
console.log(''error'');
});
Entonces sé y
catch
devuelve nuevas promesas resueltas o rechazadas con el valor devuelto en la devolución de llamada.
Pero veo los 2 códigos en la web y tengo curiosidad sobre las diferencias reales entre los 2 códigos.
Supongo que depende de cómo se implemente la promesa. Hasta donde yo sé, jQuery lo implementa de una manera diferente .
El segundo que diste parece ser la versión jQuery.