相关疑难解决方法(0)

在javascript中递归建立一个promise链 - 内存考虑因素

这个答案中,一个承诺链是递归建立的.

稍微简化,我们有:

function foo() {
    function doo() {
        // always return a promise
        if (/* more to do */) {
            return doSomethingAsync().then(doo);
        } else {
            return Promise.resolve();
        }
    }
    return doo(); // returns a promise
}
Run Code Online (Sandbox Code Playgroud)

据推测,这会产生一个调用堆栈一个承诺链 - 即"深"和"宽".

我预计内存峰值会大于执行递归或单独建立一个promise链.

  • 是这样吗?
  • 有没有人考虑过以这种方式建立连锁店的记忆问题?
  • 承诺库之间的内存消耗会有所不同吗?

javascript recursion promise

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

在for循环中以角度2链接http调用

我有一些看起来像的代码

//service.ts

addProduct(productId) {
   this.http.post('someUrl', ReqData).map(json).subscribe(doStuff);
}

//component.ts

addAllproducts(productsIds) {
   productIds.forEach(productId => service.addProduct(productId);
}
Run Code Online (Sandbox Code Playgroud)

我想要的是能够在调用下一个productId之前等待每个调用完成,而不使用window.setTimeout..

javascript typescript ngrx angular

3
推荐指数
2
解决办法
7974
查看次数

Angularjs $q 按顺序运行

遇到了angularjs和一些承诺的问题。由于某种原因,我的服务混合了查询的答案,虽然服务已修复,但我需要将 $q.all() 更改为按顺序运行,而不是异步运行所有承诺

现在,它看起来像这样:

var promises = [p1, p2, p3];

$q.all(promises).then(function () {
    // All promises are done
}).catch(function (exception) {
    // An error occured.
});
Run Code Online (Sandbox Code Playgroud)

预期的行为应该类似于p1.then(p2).then(p3);,并且顺序并不重要(因为通常运行异步)。数组长度是可变的。

由于 $q 受到 Q lib 的启发,我查看了 Q 文档并找到了序列参考,但无法使其与 $q 一起使用。

任何人都可以推荐一个简单的解决方案来解决此类问题吗?

我确实尝试过这个promises.reduce($q.when, $q(initialVal));,但不明白initialVal指的是什么:(

感谢您的阅读,祝您有美好的一天。

javascript angularjs angular-promise

2
推荐指数
1
解决办法
2493
查看次数