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

标签 javascript node.js electron

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

最佳答案

简而言之,你不能。

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

您有几种不同的语法方法(Promisesasync/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/

相关文章:

javascript - 如何在 React 类中正确等待 fetch

javascript - Java 类和 JavaScript 类之间的区别?

javascript - 我在使用 Node js 对 dynamoDB 中的表执行更新操作时遇到 ConditionalCheckFailedException

node.js - 我应该如何组合docker容器?

javascript - Electron:将选项卡拖到另一个打开的窗口中

jquery - $ .ajax不是main.js Electron 中的函数

macos - 错误 ITMS-90283 : Invalid Provisioning Profile. bundle 中包含的配置文件无效 [缺少代码签名证书]

javascript - AngularJS 指令替换

javascript - Nette - 片段更新

javascript - 如何使用react js将html表单提交的信息显示到另一个页面上?