2015-06-06 15 views
5

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); 
+0

Aktarılan kodu gösterebilir misiniz? – Bergi

+0

Hm, işe yarayacak gibi görünüyor. Garip. – Bergi

+0

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

cevap

0

Sen önce Babel sürümüne 5.5.0 için Babil bir sürümünü kullanıyor görünüyor. Bu versiyondan önce, 'dan daha düşük bir versiyonda regenerator (Babel'in bağımlılığı) yüklü olan regenerator'un await Promise.resolve(value)10 (örneğinizdeki kod) desteklemeyi başlatan ilk versiyonudur.

Destek regenerator tarafta taahhüt this ilave edildi ve Babel taahhüt this ile yenileyici en az 0.8.28 salınımını gerektirecek şekilde yükseltti.

İlgili konular