Ho la seguente app nodo contenente una funzione asincrona, in attesa di una promessa ES6.Impossibile risolvere la promessa quando si utilizza async con promessa babele ed ES6
async function test(id){
try {
let val = await Promise.resolve(id);
console.log("val: " + val);
} catch (error) {
console.log("error: " + error);
}
}
test(1);
Risultato = val: undefined
Risultato atteso: val: 1
Io uso sorso-babele per compilare questo per ES5.
Ho il seguente set all'interno del task sorso:
.pipe(babel({ optional: ["es7.asyncFunctions"] }))
Sono anche richiedendo in 'Babel/polyfill' dopo NPM installazione babel.
codice Transpiled:
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);
Puoi mostrare il codice transpiled forse? – Bergi
Hm, sembra che dovrebbe funzionare. Dispari. – Bergi
Secondo la mia esperienza non è una buona pratica usare le dichiarazioni catch catch con le promesse. Ecco perché hai chiamate API come Promise.fail(). Ma non ho familiarità con come Babel gestisce le promesse, quindi potrei sbagliarmi. – tutiplain