javascript - Javascript 使用 async/await 传递/链接一个 Promise
问题描述
是否可以在 Javascript 中等待已发送但可能尚未解决的承诺?
async function doStuff(nth) {
setTimeout(() => console.log(nth), 2000);
}
async function waitForMe(prom, callback, nth) {
await prom;
await callback(nth);
}
const v = doStuff(1);
waitForMe(v, doStuff, 2);
上面的代码是并行执行的;对于我的问题,用户可能会在运行时再次调用 doStuff,然后才能完成并且必须按顺序执行。
解决方案
你不能这样吗?
function doStuff(nth) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(nth);
resolve("done");
}, 2000);
});
}
async function waitForMe(prom, callback, nth) {
await prom;
await callback(nth);
}
const v = doStuff(1);
waitForMe(v, doStuff, 2);
推荐阅读
- php - 如何在 Laravel 中修改集合的属性值?
- graphql - 如何使用 svelte 进行 graphql 和 graphql 订阅
- mustache - 通过 AMP 列表返回整个图像?
- reactjs - Apollo Client 400 错误 - bundle.esm.js:60 Uncaught (in promise) 错误:网络错误:响应不成功:收到状态码 400
- java - 无法使用 org.eclipse.paho.client.mqttv3 连接到 Azure IOT MQTT
- spring - 是否有必要使用 spring security 和 ldap 加密或散列密码?
- php - 如何以尽可能低的工作量将小型 Silex 应用程序迁移到 Symfony 4?
- php - 在 WooCommerce 的主页上隐藏“缺货”产品
- apache-spark - 我可以在 PMML(从 Spark 导出)中使用没有 One-Hot-Encoding 的 StringIndexer 吗?
- javascript - 完成 Google 表单后,如何在 Google 电子表格中现有工作表的末尾创建新行?