我想知道是否有办法同步检查一个URL是否存在。事实上,我正在下载文件,所以我需要在尝试下载它们之前确保这些 URL 存在。这是我用来检查这些 URL 是否有效的包 https://github.com/boblauer/url-exists
最佳答案
简而言之,你不能。
您不能强制异步请求是同步的。
您有几种不同的语法方法(Promises
、async/await
、通过 Node.js http
的事件、回调等),但这一切都将归结为以某种方式异步。
async/await
模式看起来是最同步的,但它仍然是异步的。
您正在使用的包专门使用回调模式,因此您需要将其他代码调整为异步。您可以混合搭配这些方法。
我个人的偏好是将非 Promise 模式 package 到 Promise 模式中,然后在整个过程中使用 async/await
语法。同样,这看起来是同步的,但请记住它不是同步的并相应地处理它。
您可以像这样将回调语法 package 为 Promise:
const urlExistsPromise = url => new Promise((resolve, reject) =>
urlExists(url, (err, exists) => err ? reject(err) : resolve(exists));
你可以这样使用它:
urlExistsPromise(url).then(exists => console.log(exists));
或作为 await
(在标记为 async
的函数内):
const exists = await urlExistsPromise(url);
关于javascript - 如何检查 url 是否在 NodeJs 中同步存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47639798/