for循环后不调用“ then”回调

时间:2019-05-26 16:41:13

标签: javascript node.js promise

我在Promises中是个新手,不要一时不解。我想从数据库表中获取数据,对其进行加密并使用新数据更新表。我为此编写了方法:

function getUpdatedEncryptedData(total_records_count, field_name, field_name_new, additional_key) {
    var limit = 1000;
    var iterations = Math.ceil(total_records_count / limit);
    var promises = [];
    for (let i = 0; i < 1; i++) {
        var deferred = q.defer();
        promises.push(deferred.promise);
        dataForUpdate().then(function (result) {
            encryptData(result, field_name, field_name_new, additional_key).then(function (result) {
                deferred.resolve();
            }).catch(function (err) {
                console.log(err);
            });
        }).catch(function (err) {
            console.log(err);
        });
    };
    console.log(promises);
    return q.all(promises);
}

并从此处运行它

function run() {
    getTotalRecordsCount(params.db_table_name).then(function (result) {
        var total_records_count = result.total;
        return getUpdatedEncryptedData(total_records_count, params.field_name, params.field_name_new, params.additional_key).then(function () {
            console.log('All data encrypted');
            var end = new Date().getTime();
            var time = end - start;
            console.log('Execution time: ' + time);
        }).catch(function (err) {
            console.log(err);
        });
    })
}

我想知道最终的操作时间,但是当我仅设置一次迭代时,一切正常,我可以看到一条消息“所有数据都已加密”,但是当我设置2次以上时,我看不到信息。也许我做错了什么,而我的循环并没有结束?当我设置2种信号时,console.log方法将返回[ { state: 'pending' }, { state: 'pending' } ]。我不明白为什么不调用“ then”回调。

0 个答案:

没有答案