guasync file
/*
同步和异步编程的概念
同步的意思是 函数通过返回值来传递数据
函数从获取数据一直到返回数据之间的时间一直在等待
异步的意思是 函数通过回调函数的方式来传递获取的数据
函数执行后立刻就返回了, 数据获取成功后, 调用回调函数并传递参数
*/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| var fs = require('fs')
var log = console.log.bind(console, '---')
var filename = 'message.txt' console.log('写入前') fs.writeFile(filename, '你好 Node.js', (err) => { fs.readdir('.', function(err, files){ console.log('读取文件成功 files', files) if(files.includes(filename)) { fs.readFile(filename, (err, data) => { console.log('读取成功', data) fs.unlink(filename, (err) => { console.log(`最后一步, 文件 ${filename} 成功删除`) }) }) } }) }) console.log('写入函数调用后')
var guasync = function(callback) { setTimeout(function() { callback() }, 0) }
var processFiles = function() { var filename = 'guasync.txt' log('同步写入前') fs.writeFileSync(filename, '你好 同步 api') var files = fs.readdirSync('.') console.log('读取文件成功 files', files) if(files.includes(filename)) { var data = fs.readFileSync(filename) console.log('读取成功', data) fs.unlinkSync(filename) console.log(`最后一步, 文件 ${filename} 成功删除`) } log('同步写入完成后') }
guasync(function () { processFiles() }) log('干点别的事情')
|
guasync ajax
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| var log = console.log.bind(console)
var ajax = function(request) {
var data = null var r = new XMLHttpRequest() r.open(request.method, request.url, false) r.setRequestHeader('Content-Type', request.contentType) r.onreadystatechange = function(event) { if(r.readyState === 4) { log('ajax 状态 4 准备执行 callback') data = r.response } } if (request.method === 'GET') { r.send() } else { r.send(request.data) } return data }
var request = { method: 'GET', url: 'https://vip.cocode.cc/sandbox/todo/3400711034/all', callback: function (r) { log('响应完成 callback') } }
var guasync = function(callback) { setTimeout(function() { callback() }, 0) }
guasync(function() { log('ajax 开始') var data = ajax(request) log('ajax 结束', data) })
log('guasync 结束')
|