繁体   English   中英

Javascript Promise-替换箭头功能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM