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 }) } } })
正确写法:
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.作用是可以把耗时的数据传回主函数里面。承诺,一定会兑现