我正试图从一张有超时的地图中得到所有的结果。
我尝试使用promise.all()
,但由于使用了setTimeout
函数,没有成功。
我会很高兴,如果有人可以看看哦,我的代码,并建议如何做正确的。
非常感谢。
new Promise(async (resolve, reject) => {
Promise.all(
items.map(async (item, i) => {
await setTimeout(async () => {
return await SendMail(item);
}, 5000 * i);
})
).then((mailsRes) => {
resolve(mailsRes);
});
});
不确定你想要实现什么,但你可能需要这个-
async function timeout(interval) {
return new Promise(resolve => {
setTimeout(resolve, interval);
});
}
new Promise( async (resolve, reject) => {
Promise.all(items.map( async (item, i)=>{
await timeout(5000 * i).then(() => {
return await SendMail(item);
});
}))
.then(mailsRes => {
resolve(mailsRes)
})
});
问题是setTimeout会立即解决,并且在下一次回调中会得到一个超时取消器。
只需循环浏览您的项目,并在发送每封电子邮件后休眠x秒(本例中为5秒)。
const sleep = (milliSeconds) => {
return new Promise((resolve, _reject) => {
setTimeout(() => {
resolve()
}, milliSeconds)
})
}
const sendEmails = async (items) => {
for (let i = 0; i < items.length; i++) {
const currentItem = items[i];
await SendMail(currentItem);
await sleep(5000)
}
}
正如您看到的sendEmails是一个异步函数,那么您可以通过以下方式调用它:
await sendEmails(items)
问题内容: 我知道KEYS命令,但这仅返回键(我猜所有的字符串类型都是String),并且显然不认为集合是键。 是否有用于获取数据库中所有集合的命令?其他数据类型(哈希,列表,排序集)又如何呢? http://redis.io/topics/data-types 问题答案: 我知道KEYS命令,但这仅返回键(我猜所有的字符串类型都是String),并且显然不认为集合是键。 不管您的密钥是哪种数据类
我知道,为了获得Redis中所有键的列表,我必须使用,但是有没有一种方法可以将所有键及其值一起输出? 几分钟的搜索没有产生任何结果。 另外,非常感谢您的回答,但我正在寻找一个本地解决方案。我可以自己编写一个函数,遍历的所有输出。
假设我有2个或更多异步调用: 在脚本的后面,我想确保在使用变量之前设置了它们。 此示例代码遵循angularjs中的Firebase示例。 有什么想法吗?
问题内容: 如何在Oracle中获取有关表,表的列和约束等的所有信息?我在用 但这只是给我列名称,空值和类型。 问题答案: 尝试dbms_metadata软件包,您可以在此处找到更多信息
问题内容: 在C#中,我发现了一种非常可爱的方法,该方法使您可以从指定控件中获取所有后代和所有THEIR后代。 我正在寻找JavaFX的类似方法。 我看到了我要使用的类,因为它是派生所有带有孩子的Node类的类。 到目前为止,这是我所拥有的(并且我还没有在Google上通过“ JavaFX从场景中获取所有节点”之类的搜索真正找到任何东西): 那么,如何确定N是否是父母(或从父母继承)呢?我说的对吗
问题内容: 我尝试了很多不同的方法,但是总是会遇到语法错误。 我有两个表-tableA和tableB。它们都具有con_number字段作为唯一ID。我想选择tableB中不存在于tableA中的所有行。 有人可以给我这个查询,就像在MS Access中一样吗? 我知道在这种情况下使用NOT IN效率很低,因此,如果有更好的方法,那就太好了。 谢谢。 问题答案: