gpt4 book ai didi

javascript - promise 和并发

转载 作者:行者123 更新时间:2023-12-03 10:10:51 26 4
gpt4 key购买 nike

我要再次问这个问题,因为上次我没有想到正确的问题。

假设我有一个数组中的 jQuery 选择器集合:

[{menu:'.menu-a',click:'.menu-a-click'},...]

我想迭代这些选择器,如果 menu 不存在,那么如果 click 存在,则单击...

这就是麻烦开始的地方。我需要单击一次,然后在再次单击之前执行超时 - 这允许由另一个脚本构建菜单,第二次单击将隐藏它。

我想使用 Promises 来规范所有这些点击。这就像放一串鞭炮,然后点燃第一个……但 Promise 会立即执行。我该怎么做?

我可以用普通的旧 JS 对其进行编码,但我想学习其他方法。我想涉及到allmap

最佳答案

这是我想到的。打败三足驴。

var menus=[{id:0},{id:1},{id:2},{id:3}];

function doer(menu){
return new Promise(function called(res,rej){
console.log('click1:'+menu.id);
setTimeout(function(){
if(menu.id===2){return rej(new Error('could not'));}
console.log('click2:'+menu.id);
res(1);// happy
},Math.random()*8000);
});
}

Promise.reduce(menus,function(ctr,cur,i){
return doer(menus[i]).then(function(res,rej){
console.log('happy:',res);
});
},$.when(1)).then(function(){
console.log('everyones done'); //no errors
}).catch(function(eee){
console.log('Error:',eee);
}).finally(function(){
console.log('finally');
});

如果重要的话,这是 bluebird 。我不知道 Bluebird 相当于 $.when(1)

关于javascript - promise 和并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30118245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com