promise解決ajax的多重嵌套

這是最近做點(diǎn)一個(gè)用戶點(diǎn)贊的功能代碼岁诉,思路:

  1. 獲取當(dāng)前點(diǎn)擊的cuskey值(相當(dāng)于數(shù)據(jù)表的ID),用ajax 調(diào)用 invok/get 接口查詢并記錄對(duì)應(yīng)的內(nèi)容,var data222蚌堵;
  2. 調(diào)用接口/invok/update/ 上傳 dataa222 的參數(shù)并更新數(shù)據(jù)吮炕,成功后執(zhí)行頁面數(shù)值+1擂红,并改變按鈕圖片
  3. 更新成功后瘪松,需要再次調(diào)用/invok/get 接口,獲取當(dāng)前操作用戶所點(diǎn)贊的cuskey悠瞬,
  4. 獲取后们豌,更新當(dāng)前數(shù)據(jù)表中,zan這個(gè)數(shù)組的數(shù)據(jù)(存點(diǎn)贊了那些cuskey)浅妆;

源代碼:

 $.ajax({
        url: '/invok/get/',
        type: 'POST',
        data: { actid: '2017082121470227', keytype: '3', cuskey: cuskeysss },
        dataType: 'json',
        success: function(data) {
            // console.log(data);
            count1 = JSON.parse(data.Data.JsonContent).count;
            var data222 = {
                cuscode: JSON.parse(data.Data.JsonContent).cuscode,
                content: JSON.parse(data.Data.JsonContent).content,
                count: count1 + 1,
                satus: JSON.parse(data.Data.JsonContent).satus,
                Sort: JSON.parse(data.Data.JsonContent).Sort,
                cuskeya: JSON.parse(data.Data.JsonContent).cuskeya,
                name: JSON.parse(data.Data.JsonContent).name,
                img: JSON.parse(data.Data.JsonContent).img,
            };
            $.ajax({
                url: '/invok/update/',
                type: 'POST',
                data: { actid: '2017082121470227', keytype: '3', cuskey: cuskeysss, jsoncontent: JSON.stringify(data222) },
                dataType: 'json',
                success: function(data) {
                    // show();
                    $(obj).find("img").attr("src", "http://i2.mbscss.com/img/moonbasa/2017/ydw/M8_21_203200.jpg");
                    $(obj).removeAttr('onclick');
                    $(obj).find(".btn2").html(count1 + 1);
                    //插入點(diǎn)贊數(shù)組
                    $.ajax({
                        url: '/invok/get/',
                        type: 'POST',
                        data: { actid: '2017008821142411112', keytype: '3', cuskey: $.cookie('MoonbasaT_Cuscode') },
                        dataType: 'json',
                        success: function(data) {
                            var arr = JSON.parse(data.Data.JsonContent).zan;
                            arr.push(cuskeysss);
                            var data333 = {
                                zan: arr,
                            };
                            $.ajax({
                                url: '/invok/update/',
                                type: 'POST',
                                data: { actid: '2017008821142411112', keytype: '3', cuskey: $.cookie('MoonbasaT_Cuscode'), jsoncontent: JSON.stringify(data333) },
                                dataType: 'json',
                                success: function(data) {
                                    // console.log(data);
                                }
                            });
                        }
                    });
                }
            });
        }
    });

可以看到望迎,嵌套了很多層,代碼的可讀性十分的差凌外,所以我用promise優(yōu)化了下代碼:

var ajaxPromise = new Promise(function(resolve) {
        resolve();
    });
    ajaxPromise.then(function() {
        return $.ajax({
            url: '/invok/get/',
            type: 'POST',
            data: { actid: '2017082121470227', keytype: '3', cuskey: cuskeysss },
            dataType: 'json',
            success: function(data) {
                console.log(data);

                return data;
            }
        });
    }).then(function(data) {
        console.log(data);
        var count1 = JSON.parse(data.Data.JsonContent).count;
        var data222 = {
            cuscode: JSON.parse(data.Data.JsonContent).cuscode,
            content: JSON.parse(data.Data.JsonContent).content,
            count: JSON.parse(data.Data.JsonContent).count + 1,
            satus: JSON.parse(data.Data.JsonContent).satus,
            Sort: JSON.parse(data.Data.JsonContent).Sort,
            cuskeya: JSON.parse(data.Data.JsonContent).cuskeya,
            name: JSON.parse(data.Data.JsonContent).name,
            img: JSON.parse(data.Data.JsonContent).img,
        };
        $.ajax({
            url: '/invok/update/',
            type: 'POST',
            data: { actid: '2017082121470227', keytype: '3', cuskey: cuskeysss, jsoncontent: JSON.stringify(data222) },
            dataType: 'json',
            success: function(data) {
                // show();
                $(obj).find("img").attr("src", "http://i2.mbscss.com/img/moonbasa/2017/ydw/M8_21_203200.jpg");
                $(obj).removeAttr('onclick');
                $(obj).find(".btn2").html(count1 + 1);
            }
        });
    }).then(function() {
        return $.ajax({
            url: '/invok/get/',
            type: 'POST',
            data: { actid: '2017008821142411112', keytype: '3', cuskey: $.cookie('MoonbasaT_Cuscode') },
            dataType: 'json',
            success: function(datas) {
                return datas;

            }
        });
    }).then(function(datas) {
        var arr = JSON.parse(datas.Data.JsonContent).zan;
        arr.push(cuskeysss);
        var data333 = {
            zan: arr,
        };
        $.ajax({
            url: '/invok/update/',
            type: 'POST',
            data: { actid: '2017008821142411112', keytype: '3', cuskey: $.cookie('MoonbasaT_Cuscode'), jsoncontent: JSON.stringify(data333) },
            dataType: 'json',
            success: function(data) {
                // console.log(data);
            }
        });
    })
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辩尊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子趴乡,更是在濱河造成了極大的恐慌对省,老刑警劉巖蝗拿,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晾捏,死亡現(xiàn)場(chǎng)離奇詭異蒿涎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)惦辛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門劳秋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人胖齐,你說我怎么就攤上這事玻淑。” “怎么了呀伙?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵补履,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我剿另,道長(zhǎng)箫锤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任雨女,我火速辦了婚禮谚攒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘氛堕。我一直安慰自己馏臭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布讼稚。 她就那樣靜靜地躺著括儒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锐想。 梳的紋絲不亂的頭發(fā)上帮寻,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音痛倚,去河邊找鬼规婆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蝉稳,可吹牛的內(nèi)容都是我干的抒蚜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼耘戚,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼嗡髓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起收津,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤饿这,失蹤者是張志新(化名)和其女友劉穎浊伙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體长捧,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嚣鄙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了串结。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哑子。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肌割,靈堂內(nèi)的尸體忽然破棺而出卧蜓,到底是詐尸還是另有隱情,我是刑警寧澤把敞,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布弥奸,位于F島的核電站,受9級(jí)特大地震影響奋早,放射性物質(zhì)發(fā)生泄漏盛霎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一伸蚯、第九天 我趴在偏房一處隱蔽的房頂上張望摩渺。 院中可真熱鬧,春花似錦剂邮、人聲如沸摇幻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绰姻。三九已至,卻和暖如春引瀑,著一層夾襖步出監(jiān)牢的瞬間狂芋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工憨栽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留帜矾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓屑柔,卻偏偏與公主長(zhǎng)得像屡萤,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子掸宛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,190評(píng)論 25 707
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 10,993評(píng)論 6 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理死陆,服務(wù)發(fā)現(xiàn),斷路器唧瘾,智...
    卡卡羅2017閱讀 134,672評(píng)論 18 139
  • 這兩天沒更文,卻收獲了第兩千位粉絲领虹,真的是受寵若驚规哪,卻又有些看不明白啊。 好好寫文掠械,自嗨到爆時(shí)卻成天沒個(gè)人關(guān)注由缆,最...
    酒言醉語閱讀 1,481評(píng)論 178 82
  • 教你閱讀Python開源項(xiàng)目代碼 https://zhuanlan.zhihu.com/p/22275595?re...
    pcliuyang閱讀 638評(píng)論 0 3