如何使用promise构造then'able链而不嵌套`then()`函数?

时间:2016-10-06 10:51:47

标签: javascript node.js callback promise bluebird

我尝试为Redis中存在的每个密钥执行某些任务。 Promise已实施克服回调地狱。因此,我尝试将每个函数执行分配到变量中,然后尝试将它们放入thenable chain中,如下面的代码所示。 thenable在第一步工作正常,但之后无法正常工作。

请查看以下代码。下面的代码有一些依赖的js文件,我没有,但它似乎写入/处理但是,似乎我最终使用嵌套thenable chanins即使在使用promise之后。我想我是以错误的方式处理承诺。包括。

var redis = require('redis');
var client = redis.createClient();
var promise = require('bluebird');
var yaml = require('node-yaml-config');
var config = yaml.load(__dirname + '/config.yaml');
var analyticsQueue = require(config.ANALYTICSQUEUE);
var queueOpsObj = require(__dirname + '/' + config.ANALYTICSQUEUE + 'Operations.js').QueueOps;


var queueOps = new queueOpsObj(null,'test');
var getAllKeys = queueOps.getAllKeys().then(function(result){

        return result;
});

var dequeueAllResultObj = getAllKeys.then(function(keyCollection){

    promise.map(keyCollection, function(key){

        return setInterval(function(){

            var queueOps = new queueOpsObj(null, key);
            queueOps.dequeueAll().then(function(dequeueAllResult){

                console.log('*****' + dequeueAllResult);
                return result;
            }); 

        }, 3000);
    });

});
dequeueAllResultObj.then(function(result){
     // Getting undefined as result   
     console.log(result);
});

0 个答案:

没有答案