Bmob和Promise的完美结合

试用场景,通过bmob条件查询一个表,然后通过表返回的数据,在去查询多个表,在把多个表查询到的数据全部整合成一条数据,直到最后渲染到视图层,也就是各种异步操作。

先来看看Bmob的查询

const query = new Bmob.Query(Bmob.Object.extend("all"))
query.find({
  success: (res) => {
    alert("查询成功")
  },
  error: (error) => {
    alert("查询失败: " + error.code + " " + error.message);
  }
});

综上所述,那么需要在success方法中写入多个表查询,包裹多少层还不知道。此时Promise完美登场。

Promise —— Javascript 中的神器

ES6 原生提供了 Promise 对象。
所谓 Promise,就是一个对象,用来传递异步操作的消息。它代表了某个未来才会知道结果的事件(通常是一个异步操作),并且这个事件提供统一的 API,可供进一步处理。

const promise = new Promise(function(resolve, reject) {
 if (/* 异步操作成功 */){
 resolve(value);
 } else {
 reject(error);
 }
});

promise.then(function(value) {
 // success
}, function(value) {
 // failure
});

基本的 api

Promise.resolve()
Promise.reject()
Promise.prototype.then()
Promise.prototype.catch()
Promise.all() // 所有的完成
Promise.race() // 竞速,完成一个即可

结合Bmob


const BmobAll = new Promise((resolve, reject) => {
   query = new Bmob.Query(Bmob.Object.extend("all"))
   query.find({
     success: (res) => {
       resolve(res)
     },
     error: (error) => {
       reject(error)
     }
   });
 })

BmobAll.then(value => {
 // success
 // 这里即可再次进行 bmob 查表操作;
}, value => {
 // failure
});

多个表同时查询;

//任务1
const p1 = new Promise((resolve, reject) => {
 query = new Bmob.Query(Bmob.Object.extend("P1"))
 query.find({
   success: (res) => {
     resolve(res)
   },
   error: (error) => {
     reject(error)
   }
 });
})
//任务2
const p2 = new Promise((resolve, reject) => {
  query = new Bmob.Query(Bmob.Object.extend("P2"))
  query.find({
    success: (res) => {
      resolve(res)
    },
    error: (error) => {
      reject(error)
    }
  });
})
//任务3
const p3 = new Promise((resolve, reject) => {
 query = new Bmob.Query(Bmob.Object.extend("P3"))
 query.find({
   success: (res) => {
     resolve(res)
   },
   error: (error) => {
     reject(error)
   }
 });
})
//所有的任务都请求完成之后会返回他们他们所有的值。为一个数组;在这里就可以拿到所有请求的数据了。
Promise.all([p1,p2,p3]).then((val) => {
  console.log(val)
})
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,844评论 6 13
  • Promise 对象 Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函...
    neromous阅读 12,771评论 1 56
  • 周一 今天晚上到家,儿子说约好了今天继续玩强手棋,我说好。不过心里有点发怵,万一又像昨天晚上玩不到头就麻烦了。不过...
    monicaqiqi阅读 1,209评论 0 0
  • 小程序发布至今3周了,稍稍整理一些「数据那些事儿」;主要为了自己记录,因此写得比较零散随意。 概况 上线3周,目前...
    卡拉赞图书馆阅读 5,493评论 0 4
  • 130. Surrounded Regions 可以分为三个步骤 初始化一个list或dequequeue = c...
    Morphiaaa阅读 2,695评论 0 0