首页 > 编程语言 >clean-code-javascript系列之并发

clean-code-javascript系列之并发

时间:2024-11-04 13:46:22浏览次数:3  
标签:code console err require javascript promise clean error response

使用 Promises, 不要使用回调

回调不够简洁, 因为他们会产生过多的嵌套。 在 ES2015/ES6 中, Promises 已经是内置的全局类型 了,使用它们吧!

不好的:

require('request').get('https://en.wikipedia.org/wiki/Robert_Cecil_Martin', (requestErr, response) => {
  if (requestErr) {
    console.error(requestErr);
  } else {
    require('fs').writeFile('article.html', response.body, (writeErr) => {
      if (writeErr) {
        console.error(writeErr);
      } else {
        console.log('File written');
      }
    });
  }
});

好的:

require('request-promise').get('https://en.wikipedia.org/wiki/Robert_Cecil_Martin')
  .then((response) => {
    return require('fs-promise').writeFile('article.html', response);
  })
  .then(() => {
    console.log('File written');
  })
  .catch((err) => {
    console.error(err);
  });

Async/Await 比 Promises 更加简洁

Promises 是回调的一个非常简洁的替代品, 但是 ES2017/ES8 带来的 async 和 await 提供了一个 更加简洁的解决方案。 你需要的只是一个前缀为 async 关键字的函数, 接下来就可以不需要 then 函数链来编写逻辑了。 如果你能使用 ES2017/ES8 的高级功能的话, 今天就使用它吧!

不好的:

require('request-promise').get('https://en.wikipedia.org/wiki/Robert_Cecil_Martin')
  .then((response) => {
    return require('fs-promise').writeFile('article.html', response);
  })
  .then(() => {
    console.log('File written');
  })
  .catch((err) => {
    console.error(err);
  });

好的:

async function getCleanCodeArticle() {
  try {
    const response = await require('request-promise').get('https://en.wikipedia.org/wiki/Robert_Cecil_Martin');
    await require('fs-promise').writeFile('article.html', response);
    console.log('File written');
  } catch(err) {
    console.error(err);
  }
}

标签:code,console,err,require,javascript,promise,clean,error,response
From: https://blog.csdn.net/2301_78659329/article/details/143483004

相关文章

  • LeetCode 每日一题,用 Go 实现两数之和的非暴力解法
    题目给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。示例1:输入:nums=[2,7,11,15],target......
  • AtCoder Beginner Contest 378 考试总结
    发挥还行,就是罚时吃饱了,B题卡精度卡成78了。赛时得分:ABCDEFG√√√√√××[ABC378A]Pairing先对序列排个序,然后从小往大扫,如果和之后匹配了就贡献加一,然后跳过一个位置继续匹配。时间复杂度\(O(4)\)。#include<bits/stdc++.h>#definelllon......
  • Win+Vscode+Linux子系统配置UEFI开发环境
    1.在MicrosoftStore下载一个喜欢的Linux系统,我选择Ubuntu18.04.6LTS2.切换软件镜像源:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/3.按这个配置:https://blog.csdn.net/weixin_44139099/article/details/1406814424.一定要安装最新的nasm,否则会报错。https://www.nas......
  • 第一章 JavaScript基础
    1.什么是JavaScriptJavaScript是一种基于对象和事件驱动的、并具有安全性能的脚本语言JavaScript特点向HTML页面中添加交互行为脚本语言,语法和Java类似解释性语言,边执行边解释JavaScript组成ES基础语法DOM操作HTML元素BOM操作浏览器前进,后退,刷新2.JavaScrip......
  • Codeforces Round 984 (Div. 3) 题解
    CodeforcesRound984(Div.3)题解CodeforcesRound984(Div.3)Problem-A-Codeforces解题思路n很小,直接枚举即可#include<bits/stdc++.h>#defineendl'\n'usingnamespacestd;inta[100];voidsolve(){ intn;cin>>n; for(inti=1;i<=n;i......
  • JavaScript(事件监听,点击事件,事件类型:鼠标事件mouseenter,mouseleave,焦点事件focus,blur,
    事件监听目标:能够给DOM元素添加事件监听什么是事件?事件是在编程时系统内发生的动作或者发生的事情比如用户在网页上单击一个按钮什么是事件监听?就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为绑定事件或者注册事件比如鼠标经过显示下拉菜......
  • LeetCode题练习与总结:两整数之和--371
    一、题目描述给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。示例1:输入:a=1,b=2输出:3示例2:输入:a=2,b=3输出:5提示:-1000<=a,b<=1000二、解题思路这个问题可以通过位运算来解决。位运算中的“与”操作(&)和“异或”操作(^......
  • LeetCode题练习与总结:超级次方--372
    一、题目描述你的任务是计算 a^b 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。示例1:输入:a=2,b=[3]输出:8示例2:输入:a=2,b=[1,0]输出:1024示例3:输入:a=1,b=[4,3,3,8,5,2]输出:1示例4:输入:a=2147483647,b=[2,......
  • ArcGIS API for JavaScript 基础应用+实例展示+水波纹特效
    文章目录ArcGISAPIforJavaScriptweb端基础应用项目应用实例特效利用WebGL和Shader水波纹动效技术细节一、环境准备二、创建ArcGIS地图三、创建WebGL上下文并获取相关信息四、编写顶点着色器(VertexShader)代码五、编写片元着色器(FragmentShader)代码六、在JavaScript......
  • LeetCode136 只出现一次的数字
    只出现一次的数字题目链接:LeetCode136描述给你一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。示例输入:nums=[2,2,1]输出:1......