2016-11-14 14 views
0

を置き換える、私は次のコードスニペットからそれらを交換したいと思います:Javascriptの約束 - 矢印機能JSの矢印機能のサポートはまだかなり低いので

Promise.all([f1(), f2()]) 
.then(values => { f3(values); }) 
.catch(values => { f4(values); }); 

任意のアイデアはどのようにこれを達成することができますか?

+1

したがって、 'a => b'を' function(a){return b} 'に置き換えたいだけですか? – fafl

+0

もっと下位互換性が必要な場合は、まともなソースコードをそのまま使用してes5にしてください。 –

答えて

0

のために行くこれは私がIE11のような約束レスのブラウザ上の既存の約束ベースのコードの作業を可能にするために書いたソリューションです。完璧ではありませんが、うまくいきます。

CanPromise = !!window.Promise; 
PromiseResolve = []; 
PromiseReject = []; 
if (!CanPromise) 
{ 
    window.Promise = function (f) 
    { 
     var p = {}; 
     p.resolve = function (result) 
     { 
      PromiseResolve.push(result); 
     } 
     p.reject = function (result) 
     { 
      PromiseReject.push(result); 
     } 
     return f(p.resolve, p.reject); 
    }; 
} 

//........... 

PromiseResolve.length = 0; 
PromiseReject.length = 0; 

F1(args); 
F2(args); 

var AjaxTimeout = 10000; 
var period = 100; 
var cnt = 0; 
var cntMax = parseInt(AjaxTimeout/period); 

var t = setInterval(function() 
{ 
    if (PromiseReject.length > 0) 
    { 
     clearInterval(t); 
     Error(PromiseReject[0]); 
    } 
    else if (PromiseResolve.length >= 2) 
    { 
     clearInterval(t); 
     Success(PromiseResolve); 
    } 
    else if (cnt >= cntMax) 
    { 
     clearInterval(t); 
    } 
    cnt++; 
}, period); 
2

はあなたがすべてでそこに関数式を使用している理由だけではなく、

Promise.all([f1(), f2()]).then(function(values) { 
    f3(values); 
}).catch(function(values) { 
    f4(values); 
}); 
0

を「機能」と入力し、まっすぐ進むべきか? returnの値は使用しないでください。ない場合は、単に

Promise.all([f1(), f2()]).then(f3).catch(f4); 
+0

あの矢印の後ろにコードが追加されています。ここでは簡略化してFsで置き換えます。 – Marko

関連する問題