我实现了以下promise函数,比如
return new Promise(function(resolve, reject) { //logic });
当前我执行代码时使用
app.post('/Billing', function(req, res) {
cart.getBasket(req).then(function(basket) {
cart.updateBasket(req).then(function() {
cart.updateDefaultShipment(req).then(function(basket) {
cart.getBasketObject(basket).then(function(basketObj) {
res.render('billing', {
basket: basketObj
});
});
});
});
}).catch(function(error) {
console.log(error);
});
});
我读过关于promise.each
的文章,并想把它用作逻辑的流程,但当我使用promise.each
时,它并不像预期的那样工作,因为我看到each的内部函数返回每个promise执行的值。
app.post('/Billing', function(req, res) {
var asyncCalls = [cart.getBasket(req), cart.updateBasket(req), cart.updateDefaultShipment(req), cart.getBasketObject(basket)];
Promise.each(asyncCalls, function(basketObj){
res.render('billing', {
basket: basketObj
});
});
});
那么,有没有什么更干净的方法可以实现我用
做的事情。然后
链,即有一个更干净的链。
此外,在顺序的promise执行中,下一个promise函数是否可能获得已执行的前一个promise的返回值。
PS:promise数组长度会事先知道。
您可以在没有不断增加的嵌套的情况下对promise进行排序,如下所示:
app.post('/Billing', function(req, res) {
cart.getBasket(req).then(function(basket) {
return cart.updateBasket(req);
}).then(function() {
return cart.updateDefaultShipment(req);
}).then(function(basket) {
return cart.getBasketObject(basket);
}).then(function(basketObj) {
res.render('billing', {basket: basketObj});
}).catch(function(error) {
console.log(error);
res.sendStatus(500);
});
});
从.then()
返回一个promise,自动将其链接到父promise,从而允许您在父promise上使用.then()
处理程序,而不是使用更深的嵌套来继续序列。
这会自动将先前promise的结果沿着链传递给下一个操作,但不会将所有先前结果传递给后续promise。如果您需要其他先验结果,您可以在这里看到各种方法:如何将先验结果与promise链接并共享
本文向大家介绍setTimeout和Promise的执行顺序?相关面试题,主要包含被问及setTimeout和Promise的执行顺序?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 首先我们来看这样一道题: 输出答案为2 10 3 5 4 1 要先弄清楚settimeout(fun,0)何时执行,promise何时执行,then何时执行 settimeout这种异步操作的回调,只有主线程
关于 promise reduce执行顺序 请高手解释下为何p1和p2为什么都是打印1,p1和p2都在runPromiseInSequence之前执行 这是我尝试修改后的代码, 看起来还是比较吃力,求大佬帮我解析一下,问了chatgpt回答的不正确
打印2的位置 怎么解释呢
问题内容: 作者:HappyLittleFish 问题答案:
此程序成功编译并显示以下输出。 问题 a)我不明白为什么alpha的构造函数没有首先被执行。 我相信“super()”会首先被每个子构造函数隐式调用...对吗?。 b)如果beta的构造函数已经执行,那么为什么打印“5”?(输出中的第二行) 第三行我有点理解(即alpha自己的变量将显示出来,因为还没有对“a”实例变量进行强制转换)
我正在尝试理解代码的调用顺序。来人,请解释一下通话顺序。 根据我的理解,静态块将在JVM开始执行时立即执行,甚至在main类之前执行。然后执行实例初始化块。则应执行构造函数。但如果我们从静态字段调用main方法,回调是如何工作的。以及哪个main将首先被执行,哪个JVM正常执行,哪个static字段显式调用。 附注:我修改了我的问题。前面我把普通方法和构造函数混淆了,所以一些答案看起来可能不相关,