资讯专栏INFORMATION COLUMN

记录Promise的实践

mengbo / 1425人阅读

摘要:实践实践需求就是常见的缓存,如果有缓存使用缓存,没有拉链式,逻辑清晰如果中间不想返回了怎么办既支持回调,又支持就是还是有但是整体作为个返回这里用包装,和一个效果函数就是返回中断链条

Promise实践

Promise实践

需求就是常见的缓存,如果有缓存使用缓存,没有api拉.

1.链式,逻辑清晰

P.then().then().catch()

2.then chain如果中间不想返回了怎么办

Promise.reject in then

3.Promisify,既支持回调,又支持Promise

就是function还是有callback但是整体作为1个Promise返回.

这里用async包装,和new Promise一个效果.

async函数就是返回Promise.

fetchImgUrl: async function (url, fn, cached = true) {
    if (cached) {
      //Best practice for Promise then chain with async/await ....
      return await cache.store.getItem(url).then(value => {
        if (!value) {
          console.log("1st time");
          return api.get(url + "?json=true", {})
        } else {
          fn(value);
          // 中断then链条,
          // throw error to stop then chain
          // throw new Error("Already cached")
          //or reject , better
          return Promise.reject("Already cached");
        }
      }).then((response) => {
          console.log(response)
          fn(response.data.url);
          return response.data.url;
      }).then(response => {
          cache.store.setItem(url, response)
          console.log(`cache: ${response} ok`);
      }).catch(e => {
        console.log(e);
      })
    } else {
      return axios.get(url + "?json=true", {}).then((response) => {
          fn(response.data.url);
        }
      ).catch(e=>{
        console.log(e);
      });
    }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106776.html

相关文章

  • 从0开始撸一个Promise(一)

    摘要:说白了,就是给声明的添加一个包含空的对象,再由函数返回这个空。如此构成一个层层包裹的链。四首先本质是一个递归函数,结束条件是,即终止到未挂载对象的子为止。可以看到这个函数的作用就是根据属性逐个触发链中的或函数。 背景 Promise是一种非常实用的异步编程方案,本文对于Promise源码的分析可以增进读者对于Promise原理的理解,以后不再害怕异步编程,不用担心callback he...

    MSchumi 评论0 收藏0
  • JavaScript 异步

    摘要:从最开始的到封装后的都在试图解决异步编程过程中的问题。为了让编程更美好,我们就需要引入来降低异步编程的复杂性。写一个符合规范并可配合使用的写一个符合规范并可配合使用的理解的工作原理采用回调函数来处理异步编程。 JavaScript怎么使用循环代替(异步)递归 问题描述 在开发过程中,遇到一个需求:在系统初始化时通过http获取一个第三方服务器端的列表,第三方服务器提供了一个接口,可通过...

    tuniutech 评论0 收藏0
  • 音频组件开发实践

    摘要:相关操作音频的打断音频的打断包括两种情况组件重新上传新的语音第一种情况,解绑相关事件,释放内存。当浏览器预计能够在不停下来进行缓冲的情况下持续播放指定的音频视频时,会发生事件。 我的blog原文链接 最近公司迭代的项目中,新增了音频播放功能,填了不少音频的坑,总结一下: 需求: 交互需求: 上传:点击按钮上传语音,返回文件id(上传文件的范畴,本文不会阐述) 播放:点击播放按钮,异...

    qpwoeiru96 评论0 收藏0
  • [译]Express在生产环境下最佳实践 - 性能和可靠性

    摘要:前言这将是一个分为两部分,内容是关于在生产环境下,跑应用的最佳实践。第一部分会关注安全性,第二部分则会关注性能和可靠性。关于第一部分,请参阅在生产环境下的最佳实践安全性。 前言 这将是一个分为两部分,内容是关于在生产环境下,跑Express应用的最佳实践。第一部分会关注安全性,第二部分则会关注性能和可靠性。当你读这篇文章时,会假设你已经对Node.js和web开发有所了解,并且对生产环...

    Luosunce 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<