使用Promise将异步操作变为同步

news/2024/9/24 18:26:00/文章来源:https://www.cnblogs.com/czlnb/p/18429758
let promise = new Promise(function(resolve, reject) {// 异步操作let success = true; // 这是一个假设的条件if (success) {resolve("操作成功");} else {reject("操作失败");}
});

Promise 可以处于以下三种状态之一:

  1. Pending(待定):操作尚未完成,也没有被拒绝或解决.
    Promise被创建但是resolvereject没有被调用时
  2. Fulfilled(已解决):操作成功完成,并返回了一个值
    resolve被调用
  3. Rejected(已拒绝):操作失败,并返回了一个原因(通常是错误)。
    reject被调用

使用 await 关键字可以等待resolve或者reject被执行,可以利用这一点将异步操作变成同步

const { app, BrowserWindow, ipcMain, BrowserView } = require('electron');const { resolve } = require('path');function createWindow(){const mainWindow = new BrowserWindow({show: false,width: 1024,height: 768,})// 读取浏览器的 sessionconst session = mainWindow.webContents.session// 下面的代码会尝试解析代理配置,如果用户配置了系统代理,// 并且代理规则没有排除 www.google.com,那我们就可以读取到代理信息session.resolveProxy('https://www.google.com').then((proxyUrl) => {// DIRECT 表示没有配置代理if (proxyUrl !== 'DIRECT') {// proxyUrl 是这种格式: 'PROXY 127.0.0.1:6152'const hostAndPort = proxyUrl.split(' ')[1]const [proxyHost, proxyPort] = hostAndPort.split(':')console.log(proxyUrl)resolve();}})console.log("createWindow finished")
}app.whenReady().then(() => {createWindow();});

执行结果为

createWindow finished
PROXY 127.0.0.1:7890

看到PROXY 127.0.0.1:7890被异步获取了

使用await + Promise

const { app, BrowserWindow, ipcMain, BrowserView } = require('electron');const { resolve } = require('path');async function createWindow(){const mainWindow = new BrowserWindow({show: false,width: 1024,height: 768,})await new Promise((resolve,reject) => {// 读取浏览器的 sessionconst session = mainWindow.webContents.session// 下面的代码会尝试解析代理配置,如果用户配置了系统代理,// 并且代理规则没有排除 www.google.com,那我们就可以读取到代理信息session.resolveProxy('https://www.google.com').then((proxyUrl) => {// DIRECT 表示没有配置代理if (proxyUrl !== 'DIRECT') {// proxyUrl 是这种格式: 'PROXY 127.0.0.1:6152'const hostAndPort = proxyUrl.split(' ')[1]const [proxyHost, proxyPort] = hostAndPort.split(':')console.log(proxyUrl)resolve();}})})console.log("createWindow finished")
}app.whenReady().then(() => {createWindow();});

执行结果:

PROXY 127.0.0.1:7890
createWindow finished

看到PROXY 127.0.0.1:7890被同步获取的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/802951.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟

在 AI 程序员的帮助下,一个几乎没有专业编程经验的初中生,在人头攒动的展台上从零开始,两分钟就做出了一个倒计时网页。在 AI 程序员的帮助下,一个几乎没有专业编程经验的初中生,在人头攒动的展台上从零开始,两分钟就做出了一个倒计时网页。 他需要做的,只是输入包含几句…

Serverless + AI 让应用开发更简单,加速应用智能化

2024 云栖大会开幕,在大会第一天,阿里云正式发布全新产品——云应用开发平台 CAP。CAP 拥有丰富的场景化应用模板,可以极速体验,并且具备更低的成本优势以及灵活组装等特点,成为广大开发者与企业必备的一站式应用开发平台,让应用开发更简单。阿里云云原生应用平台负责人 …

调用微信、支付宝支付逻辑

1.获取sku信息 通过参数app_id: "**" decision_token: "" platform: "web" product_type: "vip"获取支付的种类和 product_id 通过参数{product_id: "302048", pay_channel: "alipay_native", price: 29000, pri…

如何解决海洋CMS数据库安装错误问题?

当遇到海洋CMS数据库安装错误的问题时,可以采取以下步骤来诊断和解决问题: 1. 检查数据库连接信息 确保你在安装过程中输入的数据库连接信息(如主机名、用户名、密码、数据库名)是正确的。如果输入错误,将会导致连接失败。 2. 确认数据库服务器状态 确认MySQL数据库服务正…

在 Windows Server 2022 上架设 WSUS(Windows更新服务)(Windows Server Update Services)服务器的步骤如下:

在 Windows Server 2022 上架设 WSUS(Windows更新服务)(Windows Server Update Services)服务器的步骤如下:1. 安装 WSUS 角色打开服务器管理器:通过开始菜单找到“服务器管理器”,并打开它。添加角色和功能:在服务器管理器中,点击“管理” > “添加角色和功能”。…

云栖3天,云原生+ AI 多场联动,新产品、新体验、新探索

云栖3天,云原生+ AI 多场联动,新产品、新体验、新探索,明天我们现场见云栖3天,云原生+ AI 20+场主题分享,三展互动,为开发者带来全新视听盛宴 2024.9.19-9.21 云栖大会 即将上演“云原生+AI”的全球盛会 展现最新的云计算技术发展与 AI技术融合之下的 “新探索” 一起来云…

11、Linux软件安装及使用

Windows软件安装流程安装检查: 检查系统是否满足软件的安装要求,包括操作系统版本、硬盘空间、内存要求等。 释放文件: 解压安装包中的文件到临时目录。 复制可执行文件: 将主要的可执行文件复制到指定的安装路径。 安装DLL动态链接库/安装服务: 根据需要安装动态链接库文件(…

Linux软件安装及使用

Windows软件安装流程安装检查: 检查系统是否满足软件的安装要求,包括操作系统版本、硬盘空间、内存要求等。 释放文件: 解压安装包中的文件到临时目录。 复制可执行文件: 将主要的可执行文件复制到指定的安装路径。 安装DLL动态链接库/安装服务: 根据需要安装动态链接库文件(…

降本 60%!小熊油耗使用阿里云 SAE 更加稳定可靠

在技术不断进步与市场竞争日益激烈的背景下,小熊油耗坚定地相信,通过持续优化和创新,定能在未来实现更大的发展与突破。感谢阿里云 SAE 为小熊油耗的成长与发展提供了强有力的支持。作者:赵世振、黛忻 把业务迁移到阿里云 SAE 之后,我们的产品更加稳定,用户体验更流畅,提…

吴辰曦的自我介绍

大家好!我是吴辰曦。我认为可以用乐观,活泼,慢热来形容我。 我性格乐观,总是能看到生活中的美好,相信无论遇到什么困难都能找到解决办法。我也很活泼,喜欢和朋友们一起玩耍、交流。不过呢,我还有点慢热,刚开始可能会比较安静,但一旦熟悉起来,就会展现出最真实的自己 …

Linux系统CentOS下挂载磁盘

1. 挂载磁盘步骤总结如下 1. 对磁盘进行分区 2. 对磁盘进行格式化 3. 将磁盘挂载到对应目录 4. 设置开机自动挂载磁盘 2. 对磁盘进行分区 2.1 查看系统设备信息 lsblk指令显示所有块设备信息:显示系统中所有的块设备信息,包括磁盘和分区 lsblk2.2 查看未挂载的磁盘 fdisk -l2…