小编Kie*_* Vo的帖子

Promise 阻止节点进程退出

我使用 Bluebird Promise 编写了一个用于迁移数据的工具,以便用户可以通过节点命令直接触发该工具。例子:

节点迁移.js

问题是,这个节点进程完成后将不存在。这是 main migrate.js 的内容,exec() 函数返回一个 Promise。

var migrate = require('../elasticsearch/migrate');
var setting = require('../../config/setting');

var cmd = new migrate(setting.NewConfig.search, true);
cmd.exec()
    .then(function () {
        console.info('Operation completed');
    })
    .catch(function (err) {
        console.error(err);
    });
Run Code Online (Sandbox Code Playgroud)

目前,我通过调用 process.exit(0); 强制它退出。

migrate.js 的内容,一些我无法公开的代码,所以我将它们删除

'use strict';
var Promise = require('bluebird');
var request = Promise.promisifyAll(require('request'));
var _ = require('lodash');

var index = require('./mapping.json');
var Schema = require('../../app/database/mysql/model');
var common = require('../../utils/common');
var client = require('../../utils/search');
var logger = require('../../utils/logger');

function Migrate(opts, enable) { …
Run Code Online (Sandbox Code Playgroud)

node.js promise bluebird

4
推荐指数
1
解决办法
5026
查看次数

标签 统计

bluebird ×1

node.js ×1

promise ×1