由于JS中对箭头函数的支持仍然很低,我想从以下代码片段替换它们:
Promise.all([f1(), f2()])
.then(values => { f3(values); })
.catch(values => { f4(values); });
知道如何实现这一目标?
答案 0 :(得分:2)
应该是直截了当的,只需输入"功能"代替
Promise.all([f1(), f2()]).then(function(values) {
f3(values);
}).catch(function(values) {
f4(values);
});
答案 1 :(得分:0)
为什么你在那里使用函数表达式?您想避免return
值吗?如果没有,请转到
Promise.all([f1(), f2()]).then(f3).catch(f4);
答案 2 :(得分: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);