微信官方云原生开发平台,腾讯云的各种能力加持,用云开发开发者可以节省大量的开发时间和运维成本。

无需运维,数据变大不需要管理,
弹性伸缩,业务量变大,服务器的性能也会弹性伸缩。
数据安全:独立的环境

云函数:云函数=小程序后端
云数据库:json数据库
云存储:文件上传下载
云调用:调用腾讯云的开放接口
HTTP API:原有的项目和云开发小程序打通
点击微信开发者工具上面的云开发,然后配置环境。
在app.json中输入页面的路径。
“pages/playlist/playlist”,
“pages/blog/blog”,
“pages/profile/profile”
同时在文件目录中会自动生成文件夹。
{urlList}}">
组件:在用户界面开发领域,组件是一种面向用户的、独立的、可复用的交互元素的封装。
组件化开发的意义:
项目中多处都是需要组建开发的。

也正是因为这样,我们常常会说: JavaScript 是由事件驱动的
现在我们有个需求,a文件读完了再读b,b读完了再读c:
我们可以这样写:
fs.readFile('a.txt','utf8',function(error,data){if(error){return console.log('读取数据失败!');}console.log('a');fs.readFile('b.txt','utf8',function(error,data){if(error){return console.log('读取数据失败!');}console.log('b');fs.readFile('c.txt','utf8',function(error,data){if(error){return console.log('读取数据失败!');}console.log('c');});});
});
这样就保证了 a 读取完在读 b,b读取完在读 c 了
上面这种代码的书写方式其实就是 回调地狱,一层套一层,维护起来及其困难,如果有100个文件怎么办?
使用 Promise 解决回调地狱问题
new Promise((resolve, reject) => {setTimeout(() => {console.log(1)resolve()//执行成功之后要执行的}, 1000)}).then((res)=>{setTimeout(() => {console.log(2)}, 2000);})
一、Promise.all 场景,上传完所有图片返回文件ID之后再保存
let p2=new Promise((resolve,reject)=>{setTimeout(() => {console.log('p2')resolve('p2')}, 1000);})let p1=new Promise((resolve,reject)=>{setTimeout(() => {console.log('p1')// resolve('p1')reject('p1')}, 2000);})let p3=new Promise((resolve,reject)=>{setTimeout(() => {console.log('p3')resolve('p3')}, 3000);})Promise.all([p1,p2,p3]).then((res)=>{console.log('全部完成')console.log(res)}).catch((err)=>{console.log('失败')console.log(err)})
全部执行成功输出
p2
p1
p3
全部完成
[“p1”, “p2”, “p3”]
p1执行失败输出
p2
p1
失败
p1
p3
Promise.all中,只要有一个任务是失败的,整个任务就都是失败的,但它并不会阻止其他任务的执行
== demo.js? [sm]:57 p1 表示在代码的57行输出p1==
二、Promise.race 比赛、竞赛,场景,可以判断请求是否超时
Promise.race([p1,p2,p3]).then((res)=>{console.log('完成')console.log(res)}).catch((err)=>{console.log('失败')console.log(err)})
按照上面的方法执行之后,输出:
p2
完成
p2
p1
p3
只要有一个任务是完成的,最后的结果就是完成的,也不会影响其他任务继续执行
上一篇:Java8中的Stream流
下一篇:一文带你看透短信验证码