を置き換える、私は次のコードスニペットからそれらを交換したいと思います:Javascriptの約束 - 矢印機能JSの矢印機能のサポートはまだかなり低いので
Promise.all([f1(), f2()])
.then(values => { f3(values); })
.catch(values => { f4(values); });
任意のアイデアはどのようにこれを達成することができますか?
を置き換える、私は次のコードスニペットからそれらを交換したいと思います:Javascriptの約束 - 矢印機能JSの矢印機能のサポートはまだかなり低いので
Promise.all([f1(), f2()])
.then(values => { f3(values); })
.catch(values => { f4(values); });
任意のアイデアはどのようにこれを達成することができますか?
のために行くこれは私が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);
はあなたがすべてでそこに関数式を使用している理由だけではなく、
Promise.all([f1(), f2()]).then(function(values) {
f3(values);
}).catch(function(values) {
f4(values);
});
を「機能」と入力し、まっすぐ進むべきか? return
の値は使用しないでください。ない場合は、単に
Promise.all([f1(), f2()]).then(f3).catch(f4);
あの矢印の後ろにコードが追加されています。ここでは簡略化してFsで置き換えます。 – Marko
したがって、 'a => b'を' function(a){return b} 'に置き換えたいだけですか? – fafl
もっと下位互換性が必要な場合は、まともなソースコードをそのまま使用してes5にしてください。 –