javascript - 可以在 Javascript Promise 中调用调试器吗?

标签 javascript node.js promise

我正在尝试使用我在 github 上找到的库并且无法调试代码未触发的原因。

//slackTypeForm.js

   var Promise = require('bluebird'),
    PromiseObject = require('promise-object')(Promise),
    request = require('request'),
    _ = require('lodash'),
    Cubby = require('Cubby');

Promise.promisifyAll(request);

var SlackAutoInviter = PromiseObject.create({
    initialize: function ($config) {
        this._typeformUID = $config.typeformUID;
        this._typeformKey = $config.typeformKey;
        this._typeformEmailField = $config.typeformEmailField;
        this._typeformFirstNameField = $config.typeformFirstNameField;
        this._typeformLastNameField = $config.typeformLastNameField;
        this._slackName = $config.slackName;
        this._slackToken = $config.slackToken;
        this._dataFile = $config.dataFile;
        this._cubby = new Cubby({file: this._dataFile});
        this._cubby.set('form-id-since', this._cubby.get('form-id-since') || 1);
    },

    inviteAll: function ($deferred) {

//调试器未命中此处 调试器;

        var typeFormResponse = _.first(request.getAsync({url: 'https://api.typeform.com/v0/form/' + this._typeformUID + '?key=' + this._typeformKey + '&completed=true&since=' + this._cubby.get('form-id-since') + '&limit=1000', json: true}));

        Promise.map(typeFormResponse.body.responses, this._inviteUser, {concurrency: 5});

        this._cubby.set('form-id-since', Math.floor(Date.now() / 1000));

        $deferred.resolve();
    },

    _inviteUser: function ($deferred, form) {
        var inviteResponse = _.first(request.postAsync({
            url: 'https://' + this._slackName + '.slack.com/api/users.admin.invite',
            form: {
                email: form.answers[this._typeformEmailField],
                first_name: form.answers[this._typeformFirstNameField],
                last_name: form.answers[this._typeformLastNameField],
                token: this._slackToken,
                set_active: 'true'
            },
            json: true
        }));

        console.log('[INVITE] ' + form.answers[this._typeformFirstNameField] + ' ' + form.answers[this._typeformLastNameField] + ' <' + form.answers[this._typeformEmailField] + '>');

        $deferred.resolve(inviteResponse.body);
    }
});

module.exports = SlackAutoInviter;

//有没有关于如何调试这个 promise 的信息?

//包.json

{
  "name": "slack-typeform-inviter",
  "version": "0.0.2",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Chad Scira",
  "license": "ISC",
  "dependencies": {
    "bluebird": "^2.3.10",
    "cubby": "0.0.3",
    "harmony": "0.0.1",
    "lodash": "^2.4.1",
    "promise-object": "^0.1.5",
    "request": "^2.47.0"
  }
}

最佳答案

我只是使用 console.log(code); 它工作正常。

我还没有得到明确的答案,但我的假设是这与延迟的 promise 有关,所以 console.log 是这样。

*更新并回答

该代码原来是 Node 0.11.x,它使用不同的语法和 Promise。我已经提交了pull-request在模块 githubg 页面上有关于如何使用 nvm 升级到不稳定版本的 Node 以使用此代码的说明。

npm install -g nvm

nvm 安装 v0.11.14

然后我就可以随心所欲地调试代码了。

关于javascript - 可以在 Javascript Promise 中调用调试器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27883531/

相关文章:

JavaScript Promises : chaining promises with non-promise objects. 为什么有效?

javascript - 需要在下拉菜单中列出以在单击数字后显示结果

javascript - express-stormpath 无法识别要在 Heroku 上初始化的环境变量

javascript - 如何使用node js从http(GET)响应中获取巨大的字符串数据而无需缓冲?

javascript - 然后nodejs promise 只有一个参数而不是2个

c++ - 在设置值之前是否必须调用 promise.get_future() ?

javascript - 有没有办法用 JavaScript 检测移动 Safari 音频中断(耳机拔出)?

javascript - 当从另一个原型(prototype)函数发布 ajax 调用时,原型(prototype)函数被意外执行

javascript - Sequelize 验证错误 (isIn)

node.js - 如何从 Mongodb + Express.js 的集合中以列表形式检索所有用户 ID?