首页IT科技js的async和await(Javascript | 分别用async await异步方法和Promise来实现一个简易的求职程序)

js的async和await(Javascript | 分别用async await异步方法和Promise来实现一个简易的求职程序)

时间2025-06-20 17:11:08分类IT科技浏览5137
导读:关注公众号,一起交流,微信搜一搜: LiOnTalKING...

关注公众号            ,一起交流                     ,微信搜一搜: LiOnTalKING

JavaScript Promise

Promise 是一个 ECMAScript 6 提供的类        ,目的是更加优雅地书写复杂的异步任务               。
如何创建一个 Promise 对象?
new Promise(function (resolve, reject) { // 要做的事情... });
Promise 的使用:
new Promise(function (resolve, reject) { console.log(1111); resolve(2222); }).then(function (value) { console.log(value); return 3333; }).then(function (value) { console.log(value); throw "An error"; }).catch(function (err) { console.log(err); });
执行结果:
1111 2222 3333 An error

JavaScript async/await异步方法

async 是“异步            ”的简写         ,async 用于申明一个 function 是异步的                    ,而 await 用于等待一个异步方法执行完成            ,await 只能出现在 async 函数中                    。 async 表示这是一个async函数      , await只能用在async函数里面                   ,不能单独使用 async 返回的是一个Promise对象                ,await就是等待这个promise的返回结果后   ,再继续执行 await 等待的是一个Promise对象                  ,后面必须跟一个Promise对象                   ,但是不必写then(),直接就可以得到返回值

求职面试

今天要实现的求职面试的程序               ,总共包含3次面试                      ,上一次面试通过才能进入到下一次面试    ,3次面试都通过了就算是求职成功了            ,分别用Promise和async/await两种方式实现对比      。
面试方法如下:
//面试 function interview(round) { return new Promise((resole, reject) => { setTimeout(() => { var score = Math.random(); if (score > 0.6) { resole(score); } else { var err = new Error(`分数:${score}`); err.round = round; reject(err) } }, 1000); }); };
该方法的参数round为第几轮面试                     ,方法返回一个promise        ,获取一个随机数         ,随机数就是面试的得分                    ,超过0.6即为通过面试            ,否则为不通过           。

通过异步方法来实现求职过程:

//异步方法求职 async function seekJobs() { console.log(seekJobs => start); console.time(seekJobs); try { console.log(第 1 轮面试得分:, await interview(1)); console.log(第 2 轮面试得分:, await interview(2)); console.log(第 3 轮面试得分:, await interview(3)); console.log(yeah!); } catch (error) { console.error( + error.round + 轮面试没通过:, error); } console.log(seekJobs => end.); console.timeEnd(seekJobs); return 求职已经结束                     。; };

通过async声明该方法为异步方法      ,每一轮面试用await等待返回面试结果                   ,通过可进入下一轮面试                ,不通过则记录是第几轮面试和得分   ,最后方法返回信息“求职已经结束         。                     ”

通过Promise方式来实现求职过程:

//promise的方式求职 function seekJobs_P() { console.log(seekJobs => start); console.time(seekJobs); interview(1) .then((score) => { console.log(第 1 轮面试得分:, score); return interview(2); }) .then((score) => { console.log(第 2 轮面试得分:, score); return interview(3); }) .then((score) => { console.log(第 3 轮面试得分:, score); console.log(yeah!); }) .catch((error) => { console.error( + error.round + 轮面试没通过:, error); }); console.log(seekJobs => end.); console.timeEnd(seekJobs); return 求职已经结束       。; };

每一轮面试的通过都会进入到then                  ,打印分数并调用下一轮面试                   ,直到所有面试都通过,中间过程中有一轮面试没通过则进入到catch               ,最后同样返回信息“求职已经结束“

最后写主程序main方法

/** * 主线程 */ (function main() { console.log(main.start======================================); console.time(main); //调用求职的异步方法,遇到await不等待,直接返回到mian方法继续执行,main执行完才输出求职返回结果 // seekJobs().then((res) => { // console.log(求职返回:, res); // }); //调用promise的方式求职,遇到then继续执行并返回"求职已经结束                      。",回到main方法输出求职返回结果,最后再输出每一次面试的分数 var res = seekJobs_P(); console.log(求职返回:, res); console.log(main.end======================================); console.timeEnd(main); })();
主程序这里可以分别调用seekJobs和seekJobs_P两种方式的求职            。
1            、异步方法在遇到await就直接 返回到main方法                      ,main方法继续往下执行    ,异步方法由另外的线程取执行            ,执行结束再回调   。
2                     、promise方法则是在遇到then继续执行并返回"求职已经结束                      。",回到main方法输出求职返回结果,最后再输出每一次面试的分数               。
声明:本站所有文章                     ,如无特殊说明或标注        ,均为本站原创发布。任何个人或组织         ,在未征得本站同意时                    ,禁止复制        、盗用         、采集                    、发布本站内容到任何网站            、书籍等各类媒体平台                   。如若本站内容侵犯了原著者的合法权益            ,可联系我们进行处理                   。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
linux中at(详解Linux系统中at与atq命令的用法)