Javascript承诺-替换箭头函数
由于JS中对箭头函数的支持仍然很低,我想从以下代码片段中替换它们:Javascript承诺-替换箭头函数,javascript,arrow-functions,Javascript,Arrow Functions,由于JS中对箭头函数的支持仍然很低,我想从以下代码片段中替换它们: Promise.all([f1(), f2()]) .then(values => { f3(values); }) .catch(values => { f4(values); }); 你知道如何实现这一点吗?应该是直截了当的,只需键入“函数”即可 应该是直截了当的,只需键入“函数”即可 为什么要在这里使用函数表达式?是否要避免返回值?如果没有,就去买吧 Promise.all([f1(), f2()]).the
Promise.all([f1(), f2()])
.then(values => { f3(values); })
.catch(values => { f4(values); });
你知道如何实现这一点吗?应该是直截了当的,只需键入“函数”即可
应该是直截了当的,只需键入“函数”即可
为什么要在这里使用函数表达式?是否要避免返回
值?如果没有,就去买吧
Promise.all([f1(), f2()]).then(f3).catch(f4);
为什么要在这里使用函数表达式?是否要避免返回值?如果没有,就去买吧
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);
这是我编写的一个解决方案,它允许现有的基于承诺的代码在没有承诺的浏览器(如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);
因此,您只需要将a=>b
替换为函数(a){return b}
?如果您想要更向后兼容,您可能应该保持您的源代码的灵活性并将其传输到es5,所以您只需要将a=>b
替换为函数(a){return b}
?如果您想获得更多向后兼容性,您可能应该保持您的源代码得体,并将其传输到es5。我在这些箭头后面有其他代码,这里我将其简化为演示,用Fs替换。哦,我在这些箭头后面有其他代码,这里我将其简化为演示,用Fs替换。