二个方法,每个方法都有ajax请求,有没有办法让二个方法按顺序执行,第一个方法不管成功失败,都会执行第二个。

比如说

`
var a = function() { fetch('/aa').then(res => {xx}) };
`var b = function() {  fetch('bb').then(res => {xxx})};
 }

有二个方法。在页面载入的时候,我要在执行完a方法中的fetch的hthen之后再执行b里面的方法,除了把b方法写在a方法的回调中,有什么其他的办法嘛??? 新手求教!!

阅读 4.3k
6 个回答

请了解一下promise和async

楼上正解,ES6的promise和async可以完美解决。
ES6 promise/async

如果不熟悉这个用法或者不喜欢这个用法,可以用函数包裹第二个ajax,在第一个ajax请求成功或失败后进行调用

a方法中return出一个promise

如有错误 请指正 同是新手

    async function a(){
           return new Promise((resolve)=>{
               $.ajax({
                   url: 'getData.php',
                   data: { 'a':1,'b':2},
                   dataType: 'json',
                   success:function(data){
                        resolve(data);
                   },
                   fail:function(err){
                        resolve(err);
                   }
               })
           })
       }

       async function b(){
            await a();
            console.log('b start');
       }

      
       b();
var a = function() { return fetch('/aa') };
var b = function() {  return fetch('bb')};

a()
.then(r => {
  console.log('a')
})
.catch(err => {
  console.log('err')
})
.finally(r => {
 return b()
})
.then(r => {
   console.log('b 运行')
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题