项目时间:2022.7.13——2023.???
学校实验室预约方式一直停留在线下纸质申请或者人工电话联系的阶段,预约流程繁琐费时,不便于学生快速高效地使用校内实验室资源。同时,他人预约信息不透明,很难作出合理的自己的预约安排,这在某种程度上也浪费了校内实验室的资源。
针对这种情况,我们设计了一款实验室预约小程序,旨在为学生提供便捷、高效、透明的实验资源预约服务,让学生可以方便地预约自己需要使用的资源。
j s js js是一门单线程语言。所以当 f u n 1 ( ) fun1() fun1()中存在一些访问接口并操作获取的返回数据这一类花费一定时间的代码时, f u n 2 ( ) fun2() fun2()可以不等 f u n 1 ( ) fun1() fun1()完全执行完就开始执行。即挂起 f u n 1 ( ) fun1() fun1()先运行 f u n 2 ( ) fun2() fun2(),等到 f u n 1 ( ) fun1() fun1()得到结果后,再执行。
同步任务是指在主线程上排队执行的任务,只有前一个任务执行完毕,才能继续执行下一个任务,当我们打开网站时,网站的渲染过程,比如元素的渲染,其实就是一个同步任务
异步任务是指不进入主线程,而进入任务队列的任务,只有任务队列通知主线程,某个异步任务可以执行了,该任务才会进入主线程,当我们打开网站时,像图片的加载,音乐的加载,其实就是一个异步任务
异步机制通过事件循环实现的。
JavaScript是单线程运行的语言,也就是说,它只有一个主线程来执行所有的代码。当需要执行异步操作时,如进行网络请求、文件读写等,主线程无法立即获得结果,因此会将这些操作放在任务队列中,等待异步操作完成后再进行处理。
事件循环就是负责处理任务队列中的任务,并将任务分配给主线程执行的机制。事件循环从任务队列中取出一个任务,将其分配给主线程执行,直到执行完毕或者遇到I/O等异步操作,然后再去取下一个任务执行。在执行异步操作时,主线程会将回调函数放入队列中,等待事件循环机制执行完主线程当前的任务后,再从队列中取出回调函数执行。
而在我的开发过程中就经常遇到fun1();fun2();
而
f
u
n
2
(
)
fun2()
fun2()要用到
f
u
n
1
(
)
fun1()
fun1()网络请求得到的数据。
我的解决方法:
function asyncOperation(callback) {
// 异步操作
setTimeout(function() {
callback('操作完成');
}, 2000);
}
asyncOperation(function(result) {
console.log(result);
});
function asyncOperation() {
return new Promise(function(resolve, reject) {
// 异步操作
setTimeout(function() {
resolve('操作完成');
}, 2000);
});
}
asyncOperation().then(function(result) {
console.log(result);
}).catch(function(error) {
console.error(error);
});
async function asyncOperation() {
return new Promise(function(resolve, reject) {
// 异步操作
setTimeout(function() {
resolve('操作完成');
}, 2000);
});
}
async function main() {
try {
const result = await asyncOperation();
console.log(result);
} catch (error) {
console.error(error);
}
}
main();
作为团队成员,担任小程序的开发工作
具体的例子:我首先根据团队成员的要求进行了设计,但在实际推广后,我们发现一些功能缺失和冗余。比如,在设计预约仪器的预约表时,最初我们只考虑了预约人的学号和姓名。然而,当我们将这个小程序实际推广到现场时,相关老师提出了额外的需求,要求预约时还需要填写预约原因和预约人数
基本同上,我在这部分主要讲讲额外的、特别的
同上
相比省创增加了一个网页和后端
如上
如上
如上