Javascript Promise-替换箭头功能 [英] Javascript promise - replace arrow functions

查看:285
本文介绍了Javascript Promise-替换箭头功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于JS中箭头功能的支持仍然很低,我想从以下代码片段中替换它们:

Since the support for arrow functions in JS is still quite low, I'd like to replace them from the following code snippet:

Promise.all([f1(), f2()])
.then(values => { f3(values); })
.catch(values => { f4(values); });

任何想法如何实现?

推荐答案

这是我写的一种解决方案,它允许现有的基于承诺的代码在IE11等无承诺浏览器上工作.不够完美,但是效果很好.

This is a solution I wrote to allow existing promise-based code work on promise-less browsers like IE11. Not perfect, but works well.

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);

这篇关于Javascript Promise-替换箭头功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆