[英]How to replace nested arrow functions in javascript for Safari compatibility?
[英]Javascript promise - replace arrow functions
由于JS中箭头功能的支持仍然很低,因此我想从以下代码片段中替换它们:
Promise.all([f1(), f2()])
.then(values => { f3(values); })
.catch(values => { f4(values); });
知道如何实现吗?
应该简单明了,只需键入“功能”即可
Promise.all([f1(), f2()]).then(function(values) {
f3(values);
}).catch(function(values) {
f4(values);
});
为什么在其中完全使用函数表达式? 您要避免return
值吗? 如果没有,那就去
Promise.all([f1(), f2()]).then(f3).catch(f4);
这是我写的一种解决方案,它允许现有的基于承诺的代码在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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.