python - Si l'objet Promise se rejette
女神的闺蜜爱上我
女神的闺蜜爱上我 2017-06-14 10:53:56
0
2
746

Code :

            var der = {};

            var p = new Promise(function (resolve, reject) {
                der.reject = reject;
            })
            p.then((v) => {
                console.log('resolve');
                console.log(v);
            })
            p.catch(function (v) {
                console.log(v);
                console.log('reject');
                console.log(v);
            });

            der.reject(p);
            console.log(p);

Seul le rejet est émis sous Firefox, mais la saisie est normalement sous Chrome, puis Uncaught (promis) apparaîtra

Excusez-moi, pourquoi une exception non capturée se produit-elle ? La capture de p est clairement définie, et pourquoi Firefox ne renvoie-t-il que le rejet, et l'opération de sortie de p n'a aucun effet (en fait, elle devrait être provoquée par une exception non capturée)


Supplément : 
La raison de l'exception non interceptée est que bien que la deuxième fonction ne soit pas définie dans then, elle est toujours exécutée et la cause et l'état sont transmis au nouvel objet Promise renvoyé. L'objet Promise renvoyé n'a pas de rappel catch, donc une exception est signalée
Mais la raison pour laquelle la sortie de p dans Firefox n'a aucun effet n'est toujours pas claire

女神的闺蜜爱上我
女神的闺蜜爱上我

répondre à tous(2)
伊谢尔伦
var der = {};

var p = new Promise(function (resolve, reject) {
    der.reject = reject;
})
// 下面修改成这个样子,因为then内部的处理函数也需要异常捕获
p.then((v) => {
    console.log('resolve');
    console.log(v);
}).catch(function (v) {
    console.log(v);
    console.log('reject');
    console.log(v);
});

der.reject(p);
console.log(p);
学霸

La promesse est équivalente à une norme. Tout prototype conforme à la norme peut être appelé une promesse. Différents navigateurs peuvent avoir des fonctionnalités différentes en dehors de la norme. Évidemment, Firefox pense que .catch et .then peuvent être déclarés séparément, puis au moment de l'exécution. Réponse, c'est-à-dire qu'aucune erreur n'est signalée comme vous l'avez mentionné ci-dessus ; et Google estime que .catch doit être traité avec l'exception dans .then, il doit donc être appliqué à la promesse après .then. Si vous utilisez .then().catch ensemble, Google ne signalera pas d'erreur. La raison sous-jacente peut être que l’une est basée sur des événements et l’autre sur des sondages.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal