-
109 votesanswersviews
处理承诺链中的多个捕获
我仍然是相当新的承诺,目前正在使用蓝鸟,但我有一个场景,我不太确定如何最好地处理它 . 例如,我在快递应用程序中有一个承诺链,如下所示: repository.Query(getAccountByIdQuery) .catch(function(error){ res.status(404).send({ error: "No account fo... -
5 votesanswersviews
如何为es2017 javascript async / await函数创建全局错误处理程序?
Bluebird 3.4.1 for promises,Chrome 56,Babel 6.23.1 鉴于: async login() { try { let response = await this.authservice.login('invalid-credentials'); } catch (error) { } } 上面的代码使用json... -
538 votesanswersviews
如何在.then()链中访问先前的promise结果?
我已将我的代码重组为promises,并构建了一个很棒的长 flat promise chain ,由多个 .then() 回调组成 . 最后我想返回一些复合值,并且需要访问多个 intermediate promise results . 但是,序列中间的分辨率值不在最后一个回调的范围内,我该如何访问它们? function getExample() { return promiseA... -
581 votesanswersviews
如何将现有回调API转换为承诺?
我想使用promises,但我有一个回调API,格式如下: 1. DOM加载或其他一次性事件: window.onload; // set to callback ... window.onload = function() { }; 2.普通回调: function request(onChangeHandler) { ... } request(function() { /... -
361 votesanswersviews
承诺不仅仅是回调吗?
我已经开发了几年的JavaScript,我根本不理解有关承诺的大惊小怪 . 似乎我所做的就是改变: api(function(result){ api2(function(result2){ api3(function(result3){ // do work }); }); }); 无论如何,我可以使用像async这样的... -
400 votesanswersviews
什么是明确的承诺构建反模式,我该如何避免它?
我编写的代码看起来像: function getStuffDone(param) { | function getStuffDone(param) { var d = Q.defer(); /* or $q.defer */ | return new Promise(function(resolve, reject) { // or = new $.De... -
11 votesanswersviews
promise链中的返回值没有被调用
我'm using the promise library Bluebird and I'目前遇到的问题是函数内的所有内容运行都很好,但是当我尝试返回一个值时,该函数返回 undefined . 这是承诺链: function foo() { createGroupMembers(parsedChat).then(function(val) { var members =... -
20 votesanswersviews
Promise被拒绝后停止运行进程
我正在使用以下可正常工作的代码,但问题是当我收到错误时,我希望它能阻止所有其他的承诺 . 例如,如果 chi.getCommand(val1, val2) ,将发送拒绝,我得到异常捕获,我想取消 chss.exe 和 app.getStatus(12); 的承诺我怎样才能实现? var start = Promise.all([ chi.getCommand(val1, val2), ... -
4 votesanswersviews
停止多次捕获的承诺链
在Node.js中,我需要读取一个文件并验证它的内容,所有这些都是异步的 . 我正在使用 Node.js 6.6 , bluebird 3.4.6 示例代码: // pseudo function to read file contents - resolves when 'flag' is true, rejects when 'flag' is false. function readFile... -
0 votesanswersviews
如何沉默承诺拒绝并停止履行链?
我正在创建一个返回promise的资源加载器函数 . 该函数执行错误记录: function load(url) { return request(..) .catch(function(error) { log(error); throw error; }); } 该功能用于各种链: load(a).the... -
1 votesanswersviews
Bluebird(或其他Promise库)保持Promise错误堆栈跟踪
好吧,我可能只是错过了显而易见的事情,但我似乎无法找到对此的一般答案,而我的谷歌到目前为止还没有让我失望 . 在Promise的Catch处理程序中,如何重新抛出错误,同时仍保留原始错误的Promise堆栈跟踪? 这可能不是正确的描述,所以这是一个例子: https://jsfiddle.net/8sgj8x4L/19/ 使用此代码,跟踪堆栈是: Warning: a promise was re... -
9 votesanswersviews
从异步等待函数获取Bluebird Promise
我正在寻找一种方法,使用Node v7.6或更高版本,在调用异步函数时获得Bluebird Promise(或任何非本机承诺) . 我可以这样做: global.Promise = require('Bluebird'); // Or Q/When var getResolvedPromise = () => Promise.resolve('value'); getResolvedPro... -
1 votesanswersviews
蓝鸟Promise.map与嵌套承诺不“完成”
我仍然试图找出蓝鸟中正确的承诺模式,我遇到了这个特殊结构的问题 . function mainFunction() { Promise.map(arrayValues, function(value) { return function1(value) .then(function(resp1) { return f... -
6 votesanswersviews
Bluebird Promise Chains:'Catch' with Result
为了使这个问题对尽可能多的人有用,我将排除我的具体实现细节,除了我正在使用下面的Node Express的Bluebird promise库 . 所以,假设我有以下链(其中 P 返回一个promise, res 是Express HTTP响应对象): P().then(function(){ // do nothing if all went well (for now) // w... -
1 votesanswersviews
使用supertest和mocha进行测试无法解决问题
我正在使用promises测试我的休息应用程序(使用hapi on node)和mocha(3.2)以及supertest(3.0) . 它在超时后停止并返回错误: 错误:超出2000ms的超时 . 对于异步测试和钩子,确保调用“done()”;如果返回Promise,请确保它已解决 . 我已经尝试增加超时但它没有用 . 如果我添加一个 done() 电话我得到: 分辨率方法过于规范 . 指... -
4 votesanswersviews
等待所有承诺在使用bluebird的nodejs中完成
什么是等待所有承诺在bluebird中完成nodejs的最好方法?假设我想从数据库中选择记录并将它们存储在redis中 . 我想出了这个 loadActiveChannels: function() { return Knex('game_channels as ch') .where('ch.channel_state', '>', 0) .then(functio... -
3 votesanswersviews
在客户端代码中未定义Bluebird promise resolve(数据)
Hiyas . 我有一个简单的应用程序,其中客户端期望作为结果的承诺,但在调用resolve()方法时,promise将继续返回undefined作为结果 . 客户端代码: UsersRepo.findOneAsync({id: id}).then(function(err, result) { console.log("UserService promise resolutio... -
0 votesanswersviews
使用NODE JS和BLUEBIRD从REDIS获取数据
我正在尝试获取特定键模式的所有条目并使回调发生整齐,我正在使用Bluebird . nodejs的redis客户端是项目的node_redis . redis客户端中的代码是 - exports.getAllRedisKeysA = function() { var res = rclient.keysAsync("client*").then(function(data... -
2 votesanswersviews
Node Promises Bluebird Collections API和Spread()问题
我正在尝试使用Bluebirds Collection功能的promise链 . 其中一个脚本例如: var rest = require("./promisified_restler.js"); function memory(token) { CHECK='cfDJO9im'; URL='https://monitoring.api.foo.com/v1.0... -
2 votesanswersviews
在Bluebird的承诺链中将同步函数转换为异步的原因是什么?
Bluebird的文档和外部帖子提到了异步错误和同步错误之间的差异,并且有一些函数可以帮助将所有这些错误归结为异步错误(例如, Promise.try 和 Promise.method )?这似乎是因为(除其他事项外)错误处理对于两者来说是不同的(同步是用 try / catch 捕获的,而异步是用 .catch 捕获的) . 但是,在一系列链式函数的第一个方法之后, then 语句是否接受同... -
2 votesanswersviews
以处理错误的方式启动javascript promise bluebird chain
这样做的动机是能够捕获结束 .catch 的所有可能错误,甚至是初始同步代码中发生的错误 . 我想像我这样开始我的承诺链: const bbPromise = require('bluebird'); bbPromise.do(() => { someTask(); // Could throw return someVar.doSomeOtherTaskAsync(); }... -
45 votesanswersviews
将承诺转换为蓝鸟
我找到了一个使用promises的现有库,但它并没有提供bluebird的所有额外功能 .map() 或 .tap() . 我如何将"normal"或"non-bluebird"承诺转换为蓝鸟承诺,蓝鸟提供的所有额外功能? 我尝试在 Promise.promisify 和 Promise.resolve 中包装现有的承诺,但似乎都没有效果 . -
3 votesanswersviews
承诺返回undefined
我知道你不能让异步函数同步运行但是如何在我的promises链中添加某种顺序? 一个结果依赖于先前的promise值,当没有发生时,我得到一个未定义的错误 . 这是一个http请求,因此它依赖于外部因素,例如我的连接可以执行请求的速度等等 . module.exports.movieCheck = function(authToken) { return request({ method ... -
0 votesanswersviews
承诺不归还 Value
我有一个节点问题,我正在使用 imap 模块,我正在尝试返回一个承诺 . 我用蓝鸟创建了一个 Promise.method() . 该代码实际上位于:https://github.com/dkran/email-thinky-test/ 所以我的问题是我有这个文件执行此操作: //file: ./imap/helper.js var Imap = require('imap'), Pr... -
2 votesanswersviews
什么是“误报”被拒绝的承诺? possiblyUnhandledRejection?
我在节点中使用Bluebird promise库 . 我的代码中有一个部分可以捕获被拒绝的承诺并且不会重新抛出它 . 之后仍然会触发“unhandledRejection”同样的承诺 - 为什么它已经被处理了? 什么是“可能未处理的拒绝”? http://bluebirdjs.com/docs/api/error-management-configuration.html 但是,由于可以在不确定... -
11 votesanswersviews
测试在Mocha / Chai中拒绝了承诺
我有一个拒绝承诺的课程: Sync.prototype.doCall = function(verb, method, data) { var self = this; self.client = P.promisifyAll(new Client()); var res = this.queue.then(function() { return self.client.c... -
8 votesanswersviews
功能类似于Promise.some / any,用于未知数量的承诺
我在node.js(V8.1.3)中创建一个脚本,该脚本查看来自多个API的类似JSON数据并比较这些值 . 更确切地说,我正在研究不同股票的不同市场价格(实际上是加密货币) . 目前,我正在使用promise.all来等待各个API的所有响应 . let fetchedJSON = await Promise.all([getJSON(settings1), getJSON(se... -
60 votesanswersviews
Koa / Co / Bluebird或Q / Generators / Promises / Thunks相互影响? (Node.js)[关闭]
我正在研究与Koa一起构建一个Web应用程序,但是我还没有完全了解Hows,whens以及为什么选择 - 并应用 - 支持“使异步更容易”的技术/方法(下面列出) . 总体而言,关于此主题的网络上的不同指南仍然使事情变得模糊,特别是在不断发展的最佳实践方面,或者至少是更好的方法,以及在什么情况下 . 在网络上似乎很少或根本没有把它全部放在上下文中 . 我希望对这个大屁股庞大的帖子做出回应可以纠正这... -
7 votesanswersviews
Bluebird承诺 - 如何爆炸数组,然后映射它?
如果我有一个数组: ['one.html','two.html','three.html'] 我怎么能爆炸那个数组,对它应用一连串的承诺,然后再把它重新组合起来?目前我的代码是这样的: Promise.map(['one','two','three'], function(i) { dbQuery('SELECT ' + i); }).then(function(results) { ... -
0 votesanswersviews
蓝鸟承诺重功能的结果
我最近在HAPI API开发中使用了Bluebird . 我刚刚碰到了我的第一个真正的问题,也许我的理解或天真让我难过 . 以下代码是我所面对的一个例子: - var Promise = require('bluebird'), stuff = require('../stuff'); module.exports = { getSomething: function(reque...