async 函数的一般使用形式一个 async 函数的基本使用形式如下:functionfoo(p) { return fetch('http://my.data?p=' + p)}asyncfunctionmain(p) { try { var data = await foo(p); return data } catch(e) { console.error(e) }}main(1).then(data =>console.log(data))...
继续执行,打印console.log( 'script end' ) 外部同步代码执行完毕,接着回到async1()内部, 由于async2()其实是返回一个Promise,await async2()相当于获取它的值,其实就相当于这段代码Promise.resolve(undefined).then((undefined) => {}),所以.then会被推入微任务队列, 所以现在微任务队列会有两个任务。接下来...
log('setTimeout end'); }, 0); function promise2() { return new Promise((resolve) => { console.log('promise2'); resolve(); }) } async function async1() { console.log('async1 start'); await promise2(); console.log('async1 end'); } async1(); console.log('script end'); ...
mkdirnodejs-event-loop-examplecdnodejs-event-loop-example npm init -y 步骤2: 创建 JavaScript 文件 在项目目录中创建一个名为fileReader.js的 JavaScript 文件,然后添加以下代码: constfs =require('fs');// 异步文件读取fs.readFile('example.txt','utf8',(err, data) =>{if(err) {console.error('...
// client.js const now = Date.now(); setTimeout(() => log(`setTimeout run after ${Date.now() - now} ms`), 1000); someAsyncOperation(); function someAsyncOperation() { http.get('http://localhost:3000/api/news', () => { log(`fetch data success after ${Date.now() ...
g.next(data) }) 5、async和await函数 ES2017标准引入了async函数; 它是Generator的语法糖,async函数就是将Generator函数的(*)替换成了async,将yield替换成了await。 async是异步的意思,而 await 是等待的意思,await 用于等待一个异步任务执行完成的结果;建立在promise的基础上。async表示函数里有异步操作,await表示...
异步 –> 回调 –> EventLoop 每一次进步都是上一个台阶,都需要智慧来解决。 回调还产生了很多问题,最严重的问题是callback hell回调地狱。 fs.readFile('/etc/password', function(err, data){ // do something fs.readFile('xxxx', function(err, data){ ...
async.autoInject({ getData: function (callback) { axios({ methods: 'get', url: 'http://baidu.com/' }).then(d => callback(null, d.status)) }, getAnotherData: function (callback) { axios({ methods: 'get', url: 'http://sogou.com/' }).then(d => callback(null, d.status)...
代码阻塞 :读取同级目录下的file.js文件,结果data为buffer结构,这样当读取过程中,会阻塞代码的执行,所以console.log(data)将被阻塞,只有当结果返回的时候,才能正常打印data。 异常处理 :如上操作有一个致命点就是,如果出现了异常,(比如在同级目录下没有 file.js 文件),就会让整个程序报错,接下来的代码讲不会执行...
为了方便维护,在JS里的把html模板和业务逻辑做了分离,在业务逻辑里向模板对象传递指定的data对象返回生成好的html,以往的数据对象是用户交互产生的,今天需要改成从接口拉取。 按照以往的逻辑,获取用户的交互数据,传递给模板。基本上是同步的,今天修改的时候为了不触碰原有的代码,把网络请求单独放在了其他对象里,业务...