美文网首页
回调地狱问题

回调地狱问题

作者: 风之伤_3eed | 来源:发表于2019-03-08 09:41 被阅读0次
    对于异步执行的代码无法保证它的执行顺序,就需要用回调函数来解决,但是当层级过多时就会有多层嵌套产生回调地狱的问题。

使用promise(es6中api)来解决回调地狱的问题。
promise
1、promise本身不是异步任务但是内部往往封装一个异步任务。
2、resolve方法实际上就是then方法传递的那个function

const myFirstPromise = new Promise((resolve, reject) => {
// 做一些异步操作,最终会调用下面两者之一:
// resolve(someValue); // fulfilled
// 或
// reject("failure reason"); // rejected
});

// 想要某个函数拥有promise功能,只需让其返回一个promise即可。
function myAsyncFunction(url) {
  return new Promise((resolve, reject) => {
      const xhr = new XMLHttpRequest();
      xhr.open("GET", url);
      xhr.onload = () => resolve(xhr.responseText);
      xhr.onerror = () => reject(xhr.statusText);
      xhr.send();
  });
};

then回调(第一个函数为成功的回调resolve, 第二个为失败的回调reject)

.then(function(data) {
    console.log(data)
    // 当return 123 后面的then接收到123
   // 当return一个p2(p2 为promise)时后续的then方法的第一个参数会作为p2的 resolve
    return 123
}, function (err) {
  console.log('读取文件失败')
})
.then(function(data) {
  console.log(data) //123
})

相关文章

  • 使用$.when实现异步调用的链式写法

    解决回调地狱的问题

  • 回调地狱问题

    使用promise(es6中api)来解决回调地狱的问题。promise1、promise本身不是异步任务但是内部...

  • 回调地狱问题

    一、什么是回调地狱(Callback Hell)? “回调地域”指的是,多级的异步的嵌套调用的问题。 举个例子:1...

  • 10 ES6 优化回调地狱、promise化、async+awa

    ES6 Promise可解决回调地狱、try{}catch{}、同步并发的异步问题,但解决回调地狱问题中依旧有很明...

  • promise

    原文地址https://www.jianshu.com/p/fe5f173276bd是解决回调地狱的问题回调地狱当...

  • 04-Node 异步编程

    Node 异步编程同步方法和异步方法异步 API 的执行顺序异步编程回调地狱问题Promise 改造回调地狱代码a...

  • promise和async

    Promise 回调地狱 Promise概念 Promise是ES6中新增的一个构造函数。 目的解决回调地狱的问题...

  • 异步相关

    一:同步异步XmlHttpRequest: Ajax原理: a->b->c地狱回调问题: Promise解决回调地...

  • Promise

    1.为什么需要Promise 回调地狱回调函数中嵌套回调Promise解决了回调地狱 2. Promise 的基本...

  • Promise

    什么是回调地狱 多层回调函数的相互嵌套,就形成了回调地狱 回调地狱的缺点: 代码耦合性太强,牵一发而动全身,难以维...

网友评论

      本文标题:回调地狱问题

      本文链接:https://www.haomeiwen.com/subject/nojcpqtx.html