我想知道是否有办法检查URL是否同步存在。事实上,我正在下载文件,所以我需要在尝试下载之前确保这些URL存在。以下是我用来检查这些网址是否有效https://github.com/boblauer/url-exists
的软件包答案 0 :(得分:3)
简而言之,你不能。
您无法强制异步请求同步。
你有几种不同的语法方法(Promises
,async/await
,通过Node.js http
的事件,回调等等),但它们都将归结为以某种方式异步。
async/await
模式看起来最同步,但它仍然是异步的。
您使用的软件包专门使用回调模式,因此您需要将其他代码调整为异步。您可以混合搭配这些方法。
我个人的偏好是将非Promise模式包装成Promise模式,然后在整个过程中使用async/await
语法。再次,这看起来是同步的,但请记住它并不是相应的处理它。
您可以将回调语法包装为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);
答案 1 :(得分:0)
您可以使用url-exist-sync
:
const urlExistSync = require("url-exist-sync");
urlExistSync("https://google.com");
//=> true
urlExistSync("https://google.com/404ingURL");
//=> false
答案 2 :(得分:0)
const urlExist = require("url-exist");
(async () => {
urlExist("http://127.0.0.1:5000/").then(exists =>
mainWindow.loadURL("http://127.0.0.1:5000/"));
})();
这对我有用。