Skip to content

code661/promiseApps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

学习 Promise 的使用

项目使用 RequireJS 来管理模块加载

第一个应用场景:Ajax

  • API.js 模块用于管理所有的 url
  • request.js 模块用于发送数据请求
  • calender.js 为页面的一个组件,可以根据数据渲染出需求想要的样式

⭐️ 实现原理: 因为 jQuery 中的 $.get() 方法也是通过 Promise 进行了封装,最终返回的是一个Promise对象,因此这样我们就可以将数据请求与数据处理放在不同的模块。维护起来就更加方便了,代码结构也足够清晰。

第二个应用场景:图片加载的问题

在我们常会有一个需求是将图片放到一个块中,比如头像、某些图片列表。但源图片很难保证长宽比例的一致,将图片放入一个固定宽高的块(div)中。如果我们通过 CSS 设置图片的宽高,就很有可能导致图片的变形。 我们通过定制一个组件来解决这个问题。期望图片能够根据自己的宽高比,合理的缩放,保证在这个块中不变形的情况下尽可能的显示更多的内容。 当图片宽度值过大时,我们期望图片的高度为 100%,并且左右居中。 当图片高度值过大时,我们期望图片的宽度为 100%,并且上下居中。

  • imgCenter.js 用于定制图片填充模式的组件
  • imgLoader 用于加载图片的模块

⭐️ 实现关键:在 imgLoader 模块中让绑定 img 元素的 onload 事件,并返回一个 Promise 实例。在imgCenter 模块中运行imgLoader 在返回的 Promise 实例 then 方法中定义函数来处理图片。

第三个应用场景:自定义弹窗的处理

利用Promise,当我们点击确认时,状态变成resolved,点击取消时,状态变成rejected。这样也方便将弹窗生成与后续的操作处理区分开来。

About

📖 Learn the use of promises with three instances

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages