如何检查url是否存在同步在NodeJs?

我想知道是否有一种方法来检查一个URL是否同步存在。 事实上,我正在下载文件,所以我需要确保这些URL在尝试下载之前就已经存在了。 这里是我用来检查这些URL是否有效的包https://github.com/boblauer/url-exists

总之,你不能。

您不能强制asynchronous请求是同步的。

你有几个不同的语法方法( Promisesasync/await ,通过Node.js http ,callback等事件),但这一切都归结为在某种程度上的asynchronous。

async/await模式看起来是最同步的,但仍然是asynchronous的。

你正在使用的包使用callback模式,所以你需要调整你的其他代码是asynchronous的。 你可以混合使用这些方法。

我的个人偏好是将非Promise模式包装为Promise模式,然后在整个过程中使用async/await语法。 再次,这看起来是同步的,但请记住它并不是相应地处理它。

您可以将callback语法作为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);