Tag: 蓝鸟

与Promise.all并行操作?

我被引导相信Promise.all执行所有你并行传递的函数,并不关心返回的promise的结束顺序。 但是当我写这个testing代码时: function Promise1(){ return new Promise(function(resolve, reject){ for(let i = 0; i < 10; i++){ console.log("Done Err!"); } resolve(true) }) } function Promise2(){ return new Promise(function(resolve, reject){ for(let i = 0; i < 10; i++){ console.log("Done True!"); } resolve(true) }) } Promise.all([ Promise1(), Promise2() ]) .then(function(){ console.log("All Done!") }) 我得到的结果是这样的 Done Err! Done Err! […]

在Node JS中实现了Bluebird嵌套循环

我在NodeJS中使用蓝鸟。 我想做一个嵌套的循环。 像这样的东西: var Promise = require('bluebird'); funcs.getLatestVideos = function(job, done) { return Promise.try(function() { return ProcessRules.getLatestVideos(); }) .then(function(object) { return ({ 'series': ProcessRules.getSeriesRules(), 'videos': object.videos }); }) .then(function(inputs) { return Promise.map(inputs.videos, function(video) { return Promise.map(inputs.series, function(series) { return Promise.map(series.rules, function(rule) { return ProcessRules.processRules(video, rule); }); }); }) }) .then(function(result) { W.debug("done"); console.log(JSON.stringify(result)); done(); }) […]

蓝鸟节点承诺,不能解决价值

我正在使用蓝鸟在我的快速应用程序中写一些承诺,但遇到了问题。 我如何在这里访问user值 – 这不是由resolve(response)方法返回的。 这是路线文件: router.get('/auth/google/callback', (req, res) => { google.getToken(req.query.code) .then( () => { google.getUser() }) .then(user => { console.log(user); //undefined – response is NOT defined here }) }); 这是pipe理从中导出方法的身份validation的文件。 module.exports.getToken = (code)=> { console.log('step 1'); return new Promise((resolve, reject) => { oauth2Client.getToken(code, (err, tokens) => { if (!err) { oauth2Client.setCredentials(tokens); resolve(); } }); […]

我在每个模块文件中都需要Promise.promisifyAll()吗?

如果我需要与Promise(Bluebird)的多个文件中的fs,我应该每次调用Promise.promisifyAll(require('fs'))? 或者用一个小模块更好 module.exports = Promise.promisifyAll(require('fs')) 并只导入该模块? 如果我做对了,我的第一个select就是每次都提供fs模块,而第二个select只会链接到同一个模块,而这个模块只有一次被启动。 或者将是我的第一个select像我的第二个select一样? 编辑:我testing了两个选项: const Promise = require('bluebird') let time1start = Date.now() for(let i = 0; i <= 1000;i++){ let fs = Promise.promisifyAll(require('fs')) } console.log('Time gone 1 Test: ' + (Date.now() – time1start)) let time2start = Date.now() for(let i = 0; i <= 1000;i++){ let fs = require('./testInc') } console.log('Time […]

在使用BlueBird.Promisify时,未捕获的typeError中间值不是函数

我尝试Promisify elasticsearch.client.index,我得到Uncaught typeerror中间值不是一个函数在makeNodePromissifedEval 我使用blubebird 3.5.0 nodejs 8.1.2

recursion地调用Promise

我有一个方法,使后通话和成功,它解决了一个承诺,但如果后调用失败,出于某种原因,我想实现recursion逻辑来调用解决承诺的方法。 我怎样才能实现这个有效的处理承诺。 以下是我正在尝试的代码。 现在,当服务调用失败时,它正在重试,但我得到未处理的拒绝错误,它是在它自己再次重试,然后拒绝。 dummyService.getAction = (requestData) => { var options = { url: config.url, json: true, body: requestData, method: 'post', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'x-request-id': 'IntegrationTesting' } } return new Promise(function (resolve, reject) { request(options, function (error, response, body) { const success = new RegExp('^2\\d{2}$'); const failure = new RegExp('^4\\d{2}$'); if (error) […]

在链式Promisified函数中创buildMongoDB文档

应用程序每15分钟运行一个进程,以下列格式创build许多输出文件: <timestamp>-<piece-code>.txt 由进程创build的所有文件将共享“时间戳”组件,但“片段代码”将有所不同,这意味着我有一个时间戳到多个片断的关系,我想保存在mongodb为: "Registry" { time: (numeric) } "Piece" { file: (string), piece: (string), registry: (reference) } 在这个过程中,我想查找是否已经创build一个时间戳 ,以避免重复,但我的代码似乎无法做到这一点。 在此先感谢您的帮助! const mongoose = require('mongoose'); const Registry = require('../model/Registry'); const Piece = require('../model/Piece'); mongoose.Promise = require('bluebird'); // Set up default mongoose connection let mongoDB = 'mongodb://127.0.0.1/numbers'; mongoose.connect(mongoDB, { useMongoClient: true }); //Get the default connection let […]

在node.js中提交一个recursion函数

我在我的应用程序中使用蓝鸟的控制stream,我试图实现promisify扩展我的recursion函数到一个承诺,但它似乎像“then”方法从来没有得到执行 我正在做一个从一个JSON对象到另一个的映射,find函数按recursion方式查看JSON属性,并根据特定的条件返回属性。 var promise = require("bluebird"); var mapToModel = function(res){ // res is a json structure var processes = res.definitions.process; var diagrams = res.definitions.BPMNDiagram; var documents = []; for(var prop in processes) { if(processes.hasOwnProperty(prop)){ var propertyNames = Object.getOwnPropertyNames(processes[prop]); for(var property in processes[prop]){ var mapping ={}; if(property==="$"){ //do something with the process }else{ //shapes mapping.hash = […]

promisified mongoose / mongodb保存不成功的Ajax调用?

我有一个伟大的promisified findOneAsync感谢@BenjaminGruenbaum ,但由于某种原因,阿贾克斯没有运行保存运行后的successfunction..这只发生promisified代码。 下面是运行成功函数refreshStories的ajax: console.log('there is a story: ' + AjaxPostData.story); // make an ajax call $.ajax({ dataType: 'json', data: AjaxPostData, type: 'post', url: liveURL + "/api/v1/stories", success: refreshStories, error: foundError }); 这里是承诺的API调用: router.route('/stories') // create a story (accessed at POST http://localhost:4200/api/v1/stories) .post(function(req, res) { var story = new Models.Story(); var toArray = req.body.to; // […]

bluebird .all()不会调用

我有一个未知数量的asynchronous进程可能从请求运行。 有一个文本块被这些进程修改。 调用UpdateScript是要修改的文本,它有一个callback,我想运行时,一切都完成。 var promise = require('bluebird'); function updateScript(text, cb){ var funcChain = [], re = some_Regular_Expression, mods = {text: text}; while (m = re.exec(mods.text)) { // The text is searched for keywords. If found a subprocess will fire …. funcChain.push( changeTitleAsync(keyword, mods) ); } promise.all(funcChain) .then(function(){ // This is never called. cb(mods.text); }); } […]