Tag: 承诺

在Node.js 7中,抑制UnhandledPromiseRejectionWarning的正确方法是什么?

在Node.js中,我有一个由一个函数组成的模块。 函数返回promise,promise可能被拒绝。 我仍然不想强制模块的所有用户明确地处理拒绝。 通过devise在某些情况下,忽略返回的承诺是有意义的。 此外,我不想承担模块用户的承诺拒绝的能力。 什么是正确的做法呢? 升级到Node.js 7.1.0之后,我所有忽略拒绝处理的unit testing都显示如下警告: (node:12732) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: try to throw an error from unit test (node:12732) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. 在DeprecationWarning描述中提到将来终止Node.js过程的正确方法是什么?

承诺 – 在Promise中捕获所有的拒绝。所有

我有这个虚拟代码 var Promise = require('bluebird') function rej1(){ return new Promise.reject(new Error('rej1')); } function rej2() { return new Promise.reject(new Error('rej2')); } function rej3() { return new Promise.reject(new Error('rej3')); } Promise.all([rej1(),rej2(),rej3()] ).then(function(){ console.log('haha') },function(e){ console.error(e); }) 在拒绝处理程序中,我只看到第一个拒绝。 是否有可能查看所有三个拒绝?

promise链里面的返回值没有被调用

我正在使用承诺库蓝鸟,我目前正在运行的问题,该函数内的一切运行良好,但当我尝试返回一个值,该函数返回undefined 。 这是承诺链: function foo() { createGroupMembers(parsedChat).then(function(val) { var members = val; createMessages(parsedChat, maxPages).then(function(val) { var messages = val; Promise.all([ createFrontCover(subject, firstdateOfMessages, lastDateOfMessages, isPreview), createStats(parsedChat), createBackCover(parsedChat)]) .then(function (results) { var front = results[0]; var stats = results[1]; var backcover = results[2]; var book = head + front + stats + members + messages + backcover; […]

不会捕获从mongoose承诺的callback函数抛出的错误

我花了太多时间试图弄清楚为什么我的express.js控制器没有响应一个简单的查询,并且发现从一个Mongoose-promisecallback触发的运行时错误正在默默地中断callback过程。 这里是我的代码的简化版本: server.get('/api/test', function (req, res, next) { User.find({}).exec().then(function success(users){ console.log('SUCCESS'); typo[0] = 1; // throws a runtime error res.json(users); }, function error(err){ console.log('ERROR'); res.json({error: err}); }); }); 这导致SUCCESS在我的控制台显示,但没有任何反应。 没有给予用户的回应,我的错误造成的错误没有出现在我的控制台,错误callback也不会被调用。 我知道一个人不应该从callback函数中抛出exception,但是在这种情况下,这只是一个错字,而且当我这样做的时候,我会被警告(比如标准输出中的堆栈跟踪)的错误。 (毕竟我们是人类) 在你看来,当承诺callback中出现这种错误时,获得反馈的最佳方式是什么?

诺言。 resolve()和resolve()之间的区别是什么?

在某处阅读这个例子: return new Promise( (resolve, reject) => { fs.readFile(file, (err, data) => { if (err) reject(err) return resolve(data) }) }) 但我通常这样做: return new Promise( (resolve, reject) => { fs.readFile(file, (err, data) => { if (err) reject(err) resolve(data) }) }) 有没有区别?

在节点js失败后,重试自己承诺

我想重申我的要求。 我想启动我的刷新,如果我总是有401错误作为循环:(如果我有401循环刷新,直到200) 我试过这个: const request = require('request'); let conf = require('../conf'); let core_service = require('coreService'); let self = module.exports = { get_count_questions: function() { return new Promise((resolve, reject) => { request({ method: 'GET', uri: 'http://api/count-questions', auth: { 'bearer': conf.token }, json: true }, function (error, response, body) { if (!error && response.statusCode === 200) { […]

node.js + request => node.js + bluebird +请求

我试图了解如何用promise来编写代码。 检查我的代码PLZ。 这是对的? Node.js +请求: request(url, function (error, response, body) { if (!error && response.statusCode == 200) { var jsonpData = body; var json; try { json = JSON.parse(jsonpData); } catch (e) { var startPos = jsonpData.indexOf('({'); var endPos = jsonpData.indexOf('})'); var jsonString = jsonpData.substring(startPos+1, endPos+1); json = JSON.parse(jsonString); } callback(null, json); } else { […]

nodejs – 如何promisify http.request? 拒绝被叫了两次

我试图把http.request包装到Promise : new Promise(function(resolve, reject) { var req = http.request({ host: '127.0.0.1', port: 4000, method: 'GET', path: '/api/v1/service' }, function(res) { if (res.statusCode < 200 || res.statusCode >= 300) { // First reject reject(new Error('statusCode=' + res.statusCode)); return; } var body = []; res.on('data', function(chunk) { body.push(chunk); }); res.on('end', function() { try { body = […]

得到第一个履行的承诺

如果我有两个承诺A和B,其中只有一个承诺会成功,我怎样才能获得成功的承诺? 我正在寻找类似于Promise.race东西,但是它只会返回满足的第一个承诺。 我正在使用ES6的承诺。

如何从嵌套的诺言中返回值?

我在Redis中有一组电影ID: [1,2,3,4]和一组具有实际数据的哈希值。 现在,我想一次获取所有ID的电影数据。 我正在尝试使用蓝鸟promisses,但我卡住了。 到目前为止,我有: 函数allMovies(){ var电影,movieIds; 返回client.smembersAsync('movies.ids')。then(function(ids){ movieIds = ids; movies = _.map(movieIds,function(id){ var电影; return client.hmgetAsync(“movies:”+ id,'title','description','director','year')。done(function(data){ 电影=数据; 返回{ 标题:data [0], 描述:data [1], 导演:资料[2], 年份:数据[3] }; }); 返回电影; }); }) 问题出在我所尝试的方面,我总是得到一个新的承诺,而所有的操作完成后,我只是对JSON感兴趣。 这里的任何人都可以解释一下这个问题?