javascript - Soalan tentang penangkapan pengecualian janji, sila beri saya jawapan
过去多啦不再A梦
过去多啦不再A梦 2017-06-12 09:28:47
0
1
649

Saya baru mengenali janji, dan ada sesuatu yang saya tidak faham saya ingin meminta bantuan anda. :

Kodnya adalah seperti berikut. Soalan saya ialah mengapa saya menulis ralat yang tidak ditentukan dalam pemasa, yang akan menyebabkan konsol melaporkan ralat secara langsung, bukannya mengatakan penolakan dan mengeluarkan 2 Dan jika saya menolak() secara langsung, kawal Stesen tidak akan melaporkan ralat, dan adalah perkara biasa jika tulisan tangan dilakukan di luar pemasa dan bukannya di dalamnya. (Di sini b ialah pembolehubah tidak ditentukan)

var p = new Promise(function(resolve, reject) {
    setTimeout(function () {
        b++;
    },1000);
    //b++;
});
p.then(function(){
    console.log(1);
},function(){
    console.log(2);
});

Mengikut perkara di atas, konsol melaporkan ralat.

Dan mengikut yang berikut, penolakan akan ditangkap dan output 2

var p = new Promise(function(resolve, reject) {
    
    b++;
});
p.then(function(){
    console.log(1);
},function(){
    console.log(2);
});
过去多啦不再A梦
过去多啦不再A梦

membalas semua(1)
黄舟

Kerana ralat b++ adalah dalam fungsi setTimeout, bukan dalam fungsi promise.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan