bluebird.js然后无法启动

麦克风

NodeJS的新手,兑现了诺言。在下面的这个简单示例中,我不明白为什么then函数不触发。数据变量已成功设置,但此后不再继续。

我究竟做错了什么?

var AWS = require('aws-sdk');
var Promise = require('bluebird');

var docClient = new AWS.DynamoDB.DocumentClient();
Promise.promisifyAll(Object.getPrototypeOf(docClient));

var tableQuery = {
    TableName : "Info",
    KeyConditionExpression: "#rt = :rt",
    ExpressionAttributeNames: { "#rt": "Type" },
    ExpressionAttributeValues: { ":rt": "Owner" }
}

docClient.queryAsync(tableQuery, function (err, data) {
    return data;
}).then(function(data) {
    //doesn't get here...
    return data.Items;
}).done(function (item) {
    console.log("Done." + item);
});
本杰明·格伦鲍姆(Benjamin Gruenbaum)

.done蓝鸟中的终止链是不要试图传递任何东西。实际上-除了特殊情况外,根本不使用它可能是一个好主意。

承诺履行then处理程序不会处理错误,.catch而是会在发现错误的地方进行处理。方法是不要将错误与值混为一谈-因此,获取数据的函数应在then处理程序中采用数据参数,而不是(err, data)

const AWS = require('aws-sdk'); // prefer const in node
const Promise = require('bluebird');

const docClient = new AWS.DynamoDB.DocumentClient();
Promise.promisifyAll(Object.getPrototypeOf(docClient));

var tableQuery = {
    TableName : "Info",
    KeyConditionExpression: "#rt = :rt",
    ExpressionAttributeNames: { "#rt": "Type" },
    ExpressionAttributeValues: { ":rt": "Owner" }
}

docClient.queryAsync(tableQuery).then(data => data.Items).then(items => {
    console.log("Done." + items);
});

您的代码失败,因为它使bluebird感到困惑-它使它在回调(您手动传递的)之后传递了一个附加参数。这实际上使诺言永远悬而未决。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaScript-Bluebird无法正确启动Promise

来自分类Dev

Bluebird Promisify execFile 无法得到承诺解决

来自分类Dev

Backbone 上的 Bluebird PromisifyAll 无法解析

来自分类Dev

bluebird vs async.js performance

来自分类Dev

多次调用承诺并延迟 Bluebird.js

来自分类Dev

bluebird.js vs bluebird.core.js有什么区别?

来自分类Dev

以处理错误的方式启动JavaScript Promise Bluebird链

来自分类Dev

从Node.js中的Promise(Bluebird)返回值

来自分类Dev

我可以对Bluebird.js做出“懒惰”承诺吗?

来自分类Dev

使用Bluebird在Promise中包装Node.js回调

来自分类Dev

Node.js + Bluebird + csv:额外项[object Object]

来自分类Dev

使用Bluebird.js和Twitter流的承诺和流

来自分类Dev

将RSVP.js映射成语移植到bluebird

来自分类Dev

在bluebird.js承诺解析上设置最小延迟

来自分类Dev

Promise / bluebird.js中的错误处理

来自分类Dev

Node和异步api调用中的Bluebird.js

来自分类Dev

Sequelize JS / Bluebird:从异步并行DB调用开始

来自分类Dev

node.js,bluebird,对执行路径的控制不良

来自分类Dev

Promise / bluebird.js中的错误处理

来自分类Dev

将RSVP.js映射成语移植到bluebird

来自分类Dev

链接异步函数Node.js bluebird mongoskin

来自分类Dev

寻找针对node.js的Promise Bluebird代码审查

来自分类Dev

Node js:猫鼬中间件中的Bluebird Promisify

来自分类Dev

node.js,bluebird,对执行路径的控制不良

来自分类Dev

Node.js | Bluebird Promise 不会异步执行任务

来自分类Dev

我正在尝试使用Bluebird的Promisify方法,但无法正常工作

来自分类Dev

我正在尝试使用Bluebird的Promisify方法,但无法正常工作

来自分类Dev

Bluebird.js:如何添加等待Promise.map的每次迭代?

来自分类Dev

在bluebird / bookshelf.js中,点击功能有什么作用

Related 相关文章

  1. 1

    JavaScript-Bluebird无法正确启动Promise

  2. 2

    Bluebird Promisify execFile 无法得到承诺解决

  3. 3

    Backbone 上的 Bluebird PromisifyAll 无法解析

  4. 4

    bluebird vs async.js performance

  5. 5

    多次调用承诺并延迟 Bluebird.js

  6. 6

    bluebird.js vs bluebird.core.js有什么区别?

  7. 7

    以处理错误的方式启动JavaScript Promise Bluebird链

  8. 8

    从Node.js中的Promise(Bluebird)返回值

  9. 9

    我可以对Bluebird.js做出“懒惰”承诺吗?

  10. 10

    使用Bluebird在Promise中包装Node.js回调

  11. 11

    Node.js + Bluebird + csv:额外项[object Object]

  12. 12

    使用Bluebird.js和Twitter流的承诺和流

  13. 13

    将RSVP.js映射成语移植到bluebird

  14. 14

    在bluebird.js承诺解析上设置最小延迟

  15. 15

    Promise / bluebird.js中的错误处理

  16. 16

    Node和异步api调用中的Bluebird.js

  17. 17

    Sequelize JS / Bluebird:从异步并行DB调用开始

  18. 18

    node.js,bluebird,对执行路径的控制不良

  19. 19

    Promise / bluebird.js中的错误处理

  20. 20

    将RSVP.js映射成语移植到bluebird

  21. 21

    链接异步函数Node.js bluebird mongoskin

  22. 22

    寻找针对node.js的Promise Bluebird代码审查

  23. 23

    Node js:猫鼬中间件中的Bluebird Promisify

  24. 24

    node.js,bluebird,对执行路径的控制不良

  25. 25

    Node.js | Bluebird Promise 不会异步执行任务

  26. 26

    我正在尝试使用Bluebird的Promisify方法,但无法正常工作

  27. 27

    我正在尝试使用Bluebird的Promisify方法,但无法正常工作

  28. 28

    Bluebird.js:如何添加等待Promise.map的每次迭代?

  29. 29

    在bluebird / bookshelf.js中,点击功能有什么作用

热门标签

归档