如何检查url是否存在同步在NodeJs?
我想知道是否有一种方法来检查一个URL是否同步存在。 事实上,我正在下载文件,所以我需要确保这些URL在尝试下载之前就已经存在了。 这里是我用来检查这些URL是否有效的包https://github.com/boblauer/url-exists
总之,你不能。
您不能强制asynchronous请求是同步的。
你有几个不同的语法方法( Promises
, async/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);