5个很棒的JavaScript Promise技巧

更新日期: 2021-02-27阅读: 1.8k标签: 技巧

Promise api改变了JavaScript的游戏。我们从滥用settimeout和解决同步操作到尽一切可能利用这个新的异步API。让我们来看看一些令人敬畏的Promise API技巧!


取消获取请求

我们立即抱怨的一个问题是无法取消承诺。一个简单的promiseInstance.cancel()本来是很好的选择,但没有出现。相反,我们得到的是一个更为复杂的API:

const controller = new AbortController();
const { signal } = controller;

fetch("http://localhost:8000", { signal }).then(response => {
    console.log(`Request 1 is complete!`);
}).catch(e => {
    console.warn(`Fetch 1 error: ${e.message}`);
});

// Abort request
controller.abort();

这里的神奇之处在于为每个fetch请求提供信号。在JavaScript世界中,我们继承了困难的API,并对它们进行了奇妙的抽象,因此我们将找到一种方法来更好地抽象这个API。


等待时间,永远等待

等待一段时间在大量生产和测试情况下是很有用的——这并不理想,但总是有帮助的。我用了两个很棒的功能让我的生活变得更好:

/* Wait for milliseconds */
function waitForTime(ms) {
  return new Promise(r => setTimeout(r, ms));
}

/* Usage */
await waitForTime(200);

/* Wait Forever */
function waitForever() {
  return new Promise(r => {});
}

// Usage:
await waitForever();

不要等待完美的情况,等待你需要的时间。


异步数组函数

像forEach、map和其他函数这样的数组函数经常被使用,而不需要它们是同步的。我们不去想它有相当多的时间我们可以在我们的操作中实现异步。

const promises = [1, 2, 3].map(async (num) => {
  console.log(num);
});

await promises;

异步和同步的区别是有承诺的。当你可以的时候,去异步!

然后在对象

您知道可以在对象上任意添加一个then方法来将它们作为Promise处理吗?

j = { then: resolve => fetch("/").then(resolve) }

j.then(res => console.log(res));
// Response {type: "basic", url: "https://davidwalsh.name/", redirected: false, status: 200, ok: true, …}

// ... or an await...
const response = await j;
// Response {type: "basic", url: "https://davidwalsh.name/", redirected: false, status: 200, ok: true, …}

现在你知道!一个大多数人都不知道的绝妙把戏!


检测异步函数

这不是你经常需要做的事情,但这篇文章是关于技巧的,对吗?如果你想检测一个异步函数,你总是可以:

async function myFunction() {

}

const isAsync = myFunction.constructor.name === "AsyncFunction";

JavaScript承诺是我们每天都要做的事情,但更广泛地看待它们会让我们有所创新!你有自己的承诺技巧吗?


链接: https://fly63.com/article/detial/10370

微信小程序技巧_你需要知道的小程序开发技巧

一直以来进行了比较多的微信小程序开发... 总会接触到一些和官方组件或 api 相关或其无法解决的需求,于是决定在这里小小的整理一下微信小程序开发的一些技巧

微信小程序分享到朋友圈方法与技巧

小程序提供onShareAppMessage 函数,此函数只支持分享给我微信朋友,小程序如何分享到朋友圈呢?使用canvas绘制一张图片,并用wx.previewImage预览图片,然后长按图片保存图片到手机。

前端新手程序员不知道的 20个小技巧

前端新手程序员不知道的 20个小技巧:作为前端开发者,使用双显示器能大幅提高开发效率、学编程最好的语言不是PHP,是English、东西交付之前偷偷测试一遍、问别人之前最好先自己百度,google一下、把觉得不靠谱的需求放到最后做,很可能到时候需求就变了...

小技巧:检查你本地及公共 IP 地址

本地的 IP 地址是分配给你计算机上的内部硬件或虚拟网卡的本地/私有 IP 地址。根据你的 LAN 配置,上述 IP 地址可能是静态或动态的。公共的 IP 地址是你的 Internet 服务提供商(ISP)为你分配的公共/外部 IP 地址。

12 个 CSS 高级技巧汇总

使用 :not() 在菜单上应用/取消应用边框;给body添加行高;所有一切都垂直居中;逗号分隔的列表;使用负的 nth-child 选择项目;对图标使用SVG;优化显示文本;对纯CSS滑块使用 max-height;继承 box-sizing

26 个 jQuery使用技巧

禁用右键点击;禁用搜索文本框;新窗口打开链接;检测浏览器;预加载图片;样式筛选;列高度相同;字体大小调整;返回页面顶部;获取鼠标的xy坐标;验证元素是否为空;替换元素

提高网站加载速度的一些小技巧

为你网站的用户留下良好的第一印象是非常必要的。随着商业领域的竞争,拥有一个吸引人的网站可以帮助你脱颖而出。研究表明,如果加载时间超过3秒,会有 40% 的用户放弃访问你的网站

《CSS世界》中提到的实用技巧

清除浮动主要用于子元素浮动(float)之后,父元素无法撑起高度和宽度。文字少时居中,多时靠左因为div嵌套着p,所以p的尺寸并不会超过div。但是要注意,当p的内容为英文单词组成的时候

不常被提及的JavaScript小技巧

这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日常工作中经常出现,但是我们又很容易忽略。Set类型是在ES6中新增的,它类似于数组,但是成员的值都是唯一的

CSS-in-JS 库 styled-class

为什么要在JavaScript里写CSS?避免命名全局污染,条件和动态样式(比如选择主题色之类的),在框架层面进行限制或补充(比如补全供应商前缀),避免业务人员使用奇技淫巧

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!