Bir ES6 sözünü bekleyen bir uyumsuzluk işlevi içeren aşağıdaki düğüm uygulamasına sahibim.Babe ve ES6 sözüyle beklemeyi kullanırken söz verilemiyor söz veriyorum
async function test(id){
try {
let val = await Promise.resolve(id);
console.log("val: " + val);
} catch (error) {
console.log("error: " + error);
}
}
test(1);
Sonuç = val: val: 1
Ben ES5 bu derlemeye yudum-Babel kullanmak
Beklenen sonuç
tanımsız.ben yudum görev içinde yer alan aşağıdaki adres: Ben de npm yükleme babel sonra 'babel/Polyfill' de gerektiren am
.pipe(babel({ optional: ["es7.asyncFunctions"] }))
.
Transpiled kodu:
function test(id) {
var val;
return regeneratorRuntime.async(function test$(context$1$0) {
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
context$1$0.prev = 0;
context$1$0.next = 3;
return Promise.resolve(id);
case 3:
val = context$1$0.sent;
console.log('val: ' + val);
context$1$0.next = 10;
break;
case 7:
context$1$0.prev = 7;
context$1$0.t0 = context$1$0['catch'](0);
console.log('error: ' + context$1$0.t0);
case 10:
case 'end':
return context$1$0.stop();
}
}, null, this, [[0, 7]]);
}
test(1);
Aktarılan kodu gösterebilir misiniz? – Bergi
Hm, işe yarayacak gibi görünüyor. Garip. – Bergi
Deneyimlerime göre, catch catch ifadelerini vaatlerle kullanmak iyi bir uygulama değildir. Bu yüzden Promise.fail() gibi API çağrılarınız var. Ama Babel'in sözlerini nasıl ele aldığına aşina değilim, bu yüzden yanılıyor olabilirim. – tutiplain