问题

1.小程序云开发查询数据库where查询无效_解决方案

原因是权限不对,在云开发控制台修改权限。

2.Promise写法的问题

初次用Promise,还需再去看看文档,终于不用写层层回调了

console.log('1.start');
var p1=new Promise(function test(resolve,reject){
    setTimeout(function(){
        //resoleve或reject是必须的
        //resolve和reject必须写在异步函数里面
        //否则会导致之后的then没效果。。
        if(true){
            resolve('ok');
        }else{
            reject('failed');
        }
        console.log('2.ok');
    },2000);
});
var p2=p1.then(function(result){
    console.log('3.end'+result);
})

 3.reduce的写法

var tmp=[1,2,3,4,5]
var tabWidth=tmp.reduce((pre,cur)=>{
    //错误写法,函数加了花括号以后要用return pre+cur; 
    pre+cur;
},0);
//正确写法1
var tabWidth=tmp.reduce((pre,cur)=>{
    return pre+cur;
},0);
//正确写法2
var tabWidth=tmp.reduce((pre,cur)=>pre+cur,0);

 4.父组件向子组件异步传值,子组件取到空值的解决办法

用小程序的observers方法监听数据变化来解决。

注意这种写法会导致死循环:

Component({
  /**
   * 组件的属性列表
   */
  properties: {
        options:{
            type:Object,
            value:{}
        }
  },
  data: {
  },
  methods: {
  },
    ready:function(e){
    },
    observers:{
        'options':function(options){
            this.setData({
                options:options
            })
        }
    }
})
View Code

正确写法:

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    options: {
      type: Object,
      value: {}
    }
  },
  data: {
    //用另外一个data来保存
    _options: {},
  },
  methods: {
  },
  ready: function (e) {
  },
  observers: {
    'options': function (options) {
      this.setData({
        //用另外一个data来保存
        _options: options
      })
    }
  }

})

5.解决遮罩层滑动穿透的问题

参考:https://blog.csdn.net/weixin_39015132/article/details/82284757

6.关于回调函数的理解

1.回调函数就像是一个承诺,一定会执行。

2.作用是可以把耗时的数据传回主函数里面。承诺,一定会兑现

原文地址:https://www.cnblogs.com/remly/p/10703234.html