小编Jos*_*eto的帖子

使用EventListener解析一个promise

我正在制作一个弹出式div,我想对动画附加一个承诺,所以我可以在弹出结束后做一些事情.

我的方法不起作用,因为我找不到将promise传递给事件处理程序上的函数的方法.似乎你不能在这里使用bind.我已经尝试过,虽然我可以解决这个承诺,但我无法删除事件处理程序

这里有什么不同的解决方案?

function EventListenerForPopUp() {
    this.removeEventListener("animationend", EventListenerForPopUp );
    this.Show.resolve();
}   

function ShowHideDiv() {        
    this.Show = function () { 
        return new Promise(function(resolve, reject) {
            this.Div.addEventListener("animationend", EventListenerForPopUp, false);
        }.bind(this));
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript

9
推荐指数
2
解决办法
9975
查看次数

javascript循环承诺在参数中使用数组进行迭代

我试图循环完成一个AsynWork数组.并且当时所有的异步工作都无法充斥系统.所以我试图用承诺一个接一个地做.我的问题是我需要通过一个值数组,以便每个异步都适用于数组的每个值.我设法用这个代码做了,但它适用于我的具体情况.不能使它一般.将其重用为其他类型的数组的方法是什么?我已经看到一些解决方案与array.reduce然后承诺,但无法弄清楚.也看过Q但没有使用的例子,如果可以用简单的javascript完成会更好.

我的代码:

function doSomething(ObjIn1, ObjIn2) {
    return new Promise(function(resolve, reject) {
        console.log("doSomething: ObjIn1: " + ObjIn1 + "  ObjIn2: " + ObjIn2);
        setTimeout(function() {
            console.log("doSomething Done: ObjIn1: " + ObjIn1 + "  ObjIn2: " + ObjIn2);
            resolve(ObjIn1, ObjIn2);
        }, 500);
    })
}

function LoopPromises(Function2Loop, functionOptions, Counter, Max) {
    console.log("Counter: " + Counter);
    if (Counter < Max) {
        Function2Loop.apply(this, [functionOptions[0][Counter], functionOptions[1]]).then(function() {
            Counter++;
            LoopPromises(Function2Loop, functionOptions, Counter, Max);
        });
    }
}

LoopPromises(doSomething, [
    ["A1", "A2", "A3"], "ARG2TESTE"
], 0, 3)
Run Code Online (Sandbox Code Playgroud)

javascript promise

3
推荐指数
1
解决办法
226
查看次数

标签 统计

javascript ×2

promise ×1