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

时间:2017-12-04 18:36:06

标签: javascript node.js electron

我想知道是否有办法检查URL是否同步存在。事实上,我正在下载文件,所以我需要在尝试下载之前确保这些URL存在。以下是我用来检查这些网址是否有效https://github.com/boblauer/url-exists

的软件包

3 个答案:

答案 0 :(得分:3)

简而言之,你不能。

您无法强制异步请求同步。

你有几种不同的语法方法(Promisesasync/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/"));
  })();

这对我有用。