在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 如何讓其請(qǐng)求完再回調(diào)?

如何讓其請(qǐng)求完再回調(diào)?

init()
render()

有兩個(gè)方法,這兩個(gè)方法必須寫在一起,init和render
init()有個(gè)ajax請(qǐng)求,現(xiàn)在想ajax請(qǐng)求回調(diào)完了之后再執(zhí)行render(),render()不能寫在回調(diào)里面
有沒(méi)有什么方法?

new Promise(function (resolve, reject) {
        if (me.init()) {
            resolve();
        } else {
            reject();
        }
    }).then(function () {
        me.render();
    }).catch(function () {
        alert('失敗');
    });

我試過(guò)這樣寫,init() return個(gè)true,可是每次都走到失敗里面
求指導(dǎo),是我哪里寫錯(cuò)了。。。。

回答
編輯回答
孤客

init()返回一個(gè)promise

    function render() {
      console.log(123);
    }
    function init() {
      return new Promise(function(resolve, reject) {
        $.ajax({
          type: 'GET',
          url: '/xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
          success: function(data) {
            resolve({
              data: data
            })
          },
          error: function(err) {
            resolve(err);
          }
        })
      })
    }
    init().then(function(data) {
      render();
    }).catch(function(err) {
      alert(err);
    });
2017年4月15日 16:53
編輯回答
嘟尛嘴

因?yàn)槟愕?init() 里是一個(gè) ajax,本來(lái)就是異步執(zhí)行,不會(huì)有直接結(jié)果返回,所以

if(me.init()){} // 這步肯定是 false 

應(yīng)該是把 init 里面的 ajax 包裝成一個(gè) promise 返回

2017年12月21日 03:28
編輯回答
空痕
init(render)

function init(cb){
    ...
    cb && cb()//寫在ajax請(qǐng)求回調(diào)里
}
2018年9月21日 16:41