async + promise 解决回调地狱

// 解决异步回调地狱的方案: async + promise

async function writeFile() {

// 打开文件

const fd = await new Promise((resolve, reject) => {

// 执行 打开文件 异步操作

fs.open(‘c.txt‘, ‘w‘, (err) => {

if (!err) {

// 将promise对象的状态改成 成功状态

resolve();

} else {

// 将promise对象的状态改成 失败状态

reject(err);

}

})

})

// 写入内容

await new Promise((resolve, reject) => {

fs.write(fd, ‘沛华~~‘, (err) => {

if (err) {

console.log(‘文件写入失败‘, err);

}

resolve();

})

})

// 关闭文件

await new Promise((resolve, reject) => {

fs.close(fd, (err) => {

if (!err) {

resolve()

} else {

reject(err);

}

})

})

return ‘success‘;

}

const p = writeFile();

p.then((a) => {

console.log(‘全部执行完了~‘,a);

}).catch((err) => {

console.log(err);

})

原文地址:https://www.cnblogs.com/wangsai-666/p/12038416.html

时间: 2024-10-07 10:44:51

async + promise 解决回调地狱的相关文章

基于PROMISE解决回调地狱问题

回调地狱问题: 在使用JavaScript时,为了实现某些逻辑经常会写出层层嵌套的回调函数,如果嵌套过多,会极大影响代码可读性和逻辑,这种情况也被成为回调地狱.比如说你要把一个函数 A 作为回调函数,但是该函数又接受一个函数 B 作为参数,甚至 B 还接受 C 作为参数使用,就这样层层嵌套,人称之为回调地狱,代码阅读性非常差. 例如:要发送三个异步的请求要求前面一个请求完成之后再依次发送请求. $.ajax{ url:'url1', success:result=>{ $.ajax{ url:'

解决回调地狱问题

1.回调地狱 在使用JavaScript时,为了实现某些逻辑经常会写出层层嵌套的回调函数,如果嵌套过多,会极大影响代码可读性和逻辑,这种情况也被成为回调地狱.比如说你要把一个函数 A 作为回调函数,但是该函数又接受一个函数 B 作为参数,甚至 B 还接受 C 作为参数使用,就这样层层嵌套,人称之为回调地狱,代码阅读性非常差.比如: var sayhello = function (name, callback) { setTimeout(function () { console.log(nam

好程序员web前端教程分享怎么用promise解决回调和异步

好程序员web前端教程分享怎么用promise解决回调和异步首先让我们看看下面这题输出什么? setTimeout(function() { console.log(1); },1000) console.log(2); 我们得到的结果是:先输出2,后输出1;这是什么原因呢?大家应该都知道定时器是异步的;所以先先输出2;那么我们的需求来了,怎么先输出1,然后输出2呢? function foo(callback) { setTimeout(function() { console.log(1);

回调地狱以及用promise怎么解决回调地狱

哈哈哈,我又又又回来了,不好意思,最近枸杞喝的比较到位,精力比较旺盛. 现在我们来聊一聊啥是回调地狱,注意是回调地狱啊   不是RB人民最爱拍的那啥地狱啊,来吧,上车吧少年,这是去幼儿园的车 都让开,我要上高清无码大图了啊,青少年注意避让 原文地址:https://www.cnblogs.com/suihang/p/9595548.html

JavaScript ES7 中使用 async/await 解决回调函数嵌套问题

原文链接:http://aisk.me/using-async-await-to-avoid-callback-hell/ JavaScript 中最蛋疼的事情莫过于回调函数嵌套问题.以往在浏览器中,因为与服务器通讯是一种比较昂贵的操作,因此比较复杂的业务逻辑往往都放在服务器端,前端 JavaScript 只需要少数几次 AJAX 请求就可拿到全部数据. 但是到了 webapp 风行的时代,前端业务逻辑越来越复杂,往往几个 AJAX 请求之间互有依赖,有些请求依赖前面请求的数据,有些请求需要并行

《Nodejs开发加密货币》之十一:一张图熟练使用Async组件解决回调大坑

关于 <Nodejs开发加密货币>,是一个加密货币产品的详细开发文档,涉及到使用Nodejs开发产品的方方面面,从前端到后台.从服务器到客户端.从PC到移动.加密解密等各个环节.代码完全开源.文章免费分享. 相关资源见 http://ebookchain.org 前言 前面说过,在Nodejs的世界里"事事皆回调",学习使用Nodejs,最不可能回避的就是"回调"(用"调回"更直观些).无法回避,自然要积极面对,因此开源社区出现了很多

七校项目中使用promise处理回调地狱问题

//封装一个promise var ajaxPromise = function(param){ return new Promise(function(suc,fail){ debugger; console.log(param) //ajax请求 $.ajax({ url:param.url, type:"post", async:false, data:param.data, dataType:"json", success: function(res) {

解决&quot;回调地狱&quot;的发展过程

Way 1 :利用promise Way 2 :利用generator Way 3 :ES7新增关键字 async await async将当前函数定义为异步函数,该函数返回一个promise对象 await用于一个异步操作之前,等待该异步操作结束,并得到异步执行的结果 await关键字返回promise对象中resolve方法传过来的值 原文地址:https://www.cnblogs.com/stuartrealm/p/10853134.html

js中promise解决callback回调地狱以及使用async+await异步处理的方法

1.callback回调地狱 function ajax(fn) { setTimeout(()=> { console.log('你好') fn() }, 1000) } ajax(() => { console.log('执行结束') ajax(()=>{ console.log('执行结束') ajax(()=>{ console.log('执行结束') ajax(()=>{ console.log('执行结束') }) }) }) }) 2.promise解决回调地狱