亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

涉及循環(huán)調(diào)用的異步編程技巧

imtianx / 1621人閱讀

摘要:先看問(wèn)題第二次失敗,重新登錄這只表示算法,并不能執(zhí)行第一次執(zhí)行失敗,重試這只表示算法,并不能執(zhí)行使用解決實(shí)例可以運(yùn)行的。

先看問(wèn)題
login_label: login(user, pass, function(result) {
    doSomeThing_label: doSomeThing(result, function(err) {
        switch(err) {
        case "disconnect":  // 第二次失敗,重新登錄
            goto login_label;  // 這只表示算法,并不能執(zhí)行
        case "retry":  // 第一次執(zhí)行失敗,重試
            goto doSomeThing_label;  // 這只表示算法,并不能執(zhí)行
        default:
            logout(function() {
                console.log("finish");
            }
        }
    }
}
使用Steps解決實(shí)例(可以運(yùn)行的。例子中有沒(méi)有異步過(guò)程都不是問(wèn)題,不信的可以自己改改驗(yàn)證)
var Steps = require("promise-tiny/Steps");

new Steps({
    user: "foo",
    pass: "foolish",
    loginCount: 0,
    doSomeThingCount: 0
}) .on("Begin", function(next) {    // 從這里開(kāi)始
        next("login", [this.user, this.pass]);
    })
   .on("login", function(next, user, pass) {
        console.log("login(""+user+"", ""+pass+"")");

        this.loginCount++;

        var result = true;    // 假設(shè)login總能成功
        console.log("    第"+this.loginCount+"次login成功");
        console.log();
        next("doSomeThing", "一些要做的事情...");
    })
   .on("doSomeThing", function(next, ...args) {
        console.log("doSomeThing(""+args+"")");

        this.doSomeThingCount++;

        if(this.doSomeThingCount === 1) {    // 假設(shè)第一次做不成功,重試一次
            console.log("    第"+this.doSomeThingCount+"次doSomeThing失敗,再試一次");
            next("doSomeThing", args);
        }
        else if(this.loginCount === 1) {    // 假設(shè)第二次做不成功,重新login
            console.log("    第"+this.doSomeThingCount+"次doSomeThing失敗,重新login");
            next("login", [this.user, this.pass]);
        }
        else {
            console.log("    第"+this.doSomeThingCount+"次doSomeThing完成了,要退出了");
            next("logout");
        }
        console.log();
    })
   .on("logout", function(next) {
        console.log("logout()");
    })

運(yùn)行結(jié)果

login("foo", "foolish")
    第1次login成功

doSomeThing("一些要做的事情...")
    第1次doSomeThing失敗,再試一次

doSomeThing("一些要做的事情...")
    第2次doSomeThing失敗,重新login

login("foo", "foolish")
    第2次login成功

doSomeThing("一些要做的事情...")
    第3次doSomeThing完成了,要退出了

logout()

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/87738.html

相關(guān)文章

  • python基礎(chǔ)教程:異步IO 之編程例子

    摘要:創(chuàng)建第一個(gè)協(xié)程推薦使用語(yǔ)法來(lái)聲明協(xié)程,來(lái)編寫(xiě)異步應(yīng)用程序。協(xié)程兩個(gè)緊密相關(guān)的概念是協(xié)程函數(shù)通過(guò)定義的函數(shù)協(xié)程對(duì)象調(diào)用協(xié)程函數(shù)返回的對(duì)象。它是一個(gè)低層級(jí)的可等待對(duì)象,表示一個(gè)異步操作的最終結(jié)果。 我們講以Python 3.7 上的asyncio為例講解如何使用Python的異步IO。 showImg(https://segmentfault.com/img/remote/14600000...

    wangxinarhat 評(píng)論0 收藏0
  • 異步流程之Promise解析

    摘要:采用鏈?zhǔn)降?,可以指定一組按照次序調(diào)用的回調(diào)函數(shù)。異步操作成功異步操作成功上面代碼中,第一個(gè)方法指定的回調(diào)函數(shù),返回的是另一個(gè)對(duì)象。這時(shí),第二個(gè)方法指定的回調(diào)函數(shù),就會(huì)等待這個(gè)新的對(duì)象狀態(tài)發(fā)生變化。方法是的別名,用于指定發(fā)生錯(cuò)誤時(shí)的回調(diào)函數(shù)。 好久沒(méi)有更新文章了,最近剛好遇到考試,而且一直在做數(shù)據(jù)庫(kù)課設(shè)。 本來(lái)這篇文章是上個(gè)星期想要分享給工作室的師弟師妹們的,結(jié)果因?yàn)榭荚嚲吐湎铝恕?其實(shí)...

    luoyibu 評(píng)論0 收藏0
  • node - 非阻塞異步 IO

    摘要:而線(xiàn)程是進(jìn)程的一部分,二者相扶相依,其中單線(xiàn)程被稱(chēng)為輕權(quán)進(jìn)程或輕量級(jí)進(jìn)程,執(zhí)行特性線(xiàn)程只有個(gè)基本狀態(tài)就緒,執(zhí)行,阻塞。以上所述證明了操作與其他函數(shù)的這種區(qū)別是由實(shí)現(xiàn),是用多線(xiàn)程的方式,在標(biāo)準(zhǔn)的阻塞式上模擬非阻塞異步,線(xiàn)程池默認(rèn)限制四線(xiàn)程。 node - 非阻塞的異步 IO 每當(dāng)我們提起 node.js 時(shí)總會(huì)脫口而出 事件驅(qū)動(dòng)、非阻塞I/O 和 單線(xiàn)程,所以我總結(jié)了以下幾點(diǎn)對(duì)這三項(xiàng)概念...

    yuxue 評(píng)論0 收藏0
  • node - 非阻塞異步 IO

    摘要:而線(xiàn)程是進(jìn)程的一部分,二者相扶相依,其中單線(xiàn)程被稱(chēng)為輕權(quán)進(jìn)程或輕量級(jí)進(jìn)程,執(zhí)行特性線(xiàn)程只有個(gè)基本狀態(tài)就緒,執(zhí)行,阻塞。以上所述證明了操作與其他函數(shù)的這種區(qū)別是由實(shí)現(xiàn),是用多線(xiàn)程的方式,在標(biāo)準(zhǔn)的阻塞式上模擬非阻塞異步,線(xiàn)程池默認(rèn)限制四線(xiàn)程。 node - 非阻塞的異步 IO 每當(dāng)我們提起 node.js 時(shí)總會(huì)脫口而出 事件驅(qū)動(dòng)、非阻塞I/O 和 單線(xiàn)程,所以我總結(jié)了以下幾點(diǎn)對(duì)這三項(xiàng)概念...

    keelii 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<