sql >> Databáze >  >> NoSQL >> Redis

Návrhové vzory JavaScriptu – řešení nežádoucí asynchronie

Potýkáte se s asynchronií, protože své funkce stále píšete v synchronním paradigmatu.

V asynchronním režimu byste měli k událostem připojit zpětná volání. Neměli byste očekávat výsledek od asynchronní funkce, jako je get_latest_results() , ale měli byste mu předat funkci zpětného volání jako argument, který se má vyvolat, až budou připraveny výsledky. Zpětné volání provede vše, co je třeba udělat s vašimi výsledky:

var get_latest_results = function (feedId, readyCallback) {
    client.get('feed:' + feedId + ':latest', function (err, res) {
        var latest_reading_key = res.toString();
        client.hgetall(latest_reading_key, function (err, res) {
            readyCallback(res);                           //--- Trigger Callback
        });
    });
    // how do I specify a return value for this function? //--- You don't
}

Potom můžete svou funkci zavolat takto:

get_latest_results(1000, function (result) {
   //--- Do whatever needs to be done with the latest result...
});



  1. Jak vytvořit model v DRY vzoru pomocí flow.js (pro asynchronní volání) v node.js?

  2. redis:reset počítadla každý den

  3. spring server se nemůže připojit k redis pomocí klienta jedis

  4. Jak provádět mongo příkazy prostřednictvím skriptů shellu?