Tag: 诺言

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; // […]

如何使用jasmine-nodetesting函数,内部调用返回promise的函数?

我只是尝试了茉莉节点。 我需要一些有关承诺解决的帮助。 我有简单的js文件 //dataService.js var Q = require('q'); console.info("Q is "+Q); exports.test = function() { console.warn("Will call promise now"); this.getQuestions().then(function() { console.log("Test.."); }); }; exports.getQuestions = function() { var deferred = Q.defer(); for(i=0; i<=10; i++) { if(i===10) { deferred.resolve(i); } } return deferred.promise; // return { // 'Question1': 'What is your name' // } } […]

Q.ninvoke节点蓝鸟的replace

我从Q迁移到蓝鸟项目。 在这个项目中,Q.invoke被使用了很多。 例如在这样的中心方法中: repo.count = function(entity,query) { // entity is a mongoose model var command = query = entity.find(query).count(); return Q.ninvoke(command, 'exec'); }; 什么是最好的蓝鸟重构这个代码的方式,并返回相同的“种”承诺? 阅读蓝鸟文件,似乎promisifyAll似乎是在正确的方向点。 现在,我有这个工程,但阻止呼叫: repo.count = function*(entity,query) { entity = bluebird.promisifyAll(entity); // this needs to be moved somewhere central return yield entity.find(query).count(); };

mongodb本地化的推广

我正在尝试使用bluebird和mongodb,并且出现错误。 var Promise = require("bluebird") var MongoDB = require("mongodb") Promise.promisifyAll(MongoDB) return MongoDB.connectAsync(process.env.MONGO_URL).then(function(db){ var collection = db.collection('queue') return collection.find().toArray().then(function(docs){ console.log(docs) }) }).catch(function(e){ console.log(e.message) throw e }) 我得到这个错误: Unhandled rejection Error at Object.<anonymous> (/Users/thomas/Desktop/project/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:42:24) at Module._compile (module.js:410:26) at Object.Module._extensions..js (module.js:428:10) at Module.load (module.js:335:32) at Function.Module._load (module.js:290:12) at Module.require (module.js:345:17) at require (module.js:364:17) at Object.<anonymous> (/Users/thomas/Desktop/project/node_modules/mongodb/node_modules/mongodb-core/index.js:2:17) at Module._compile […]

如何正确使用Promise.all()和然后()与asynchronous函数?

在下面的代码中,我试图把第一个和第二个查询的结果放在一个名为result的全局variables中。 问题是Promise.all()没有等待查询完成, then() 。 我该如何解决? 码: var result = {}; Promise.all([ connection.query('SELECT * FROM analysis', function(err, rows, fields) { if (err) throw err; result.analysis = rows; console.log("query 1"); }), connection.query('SELECT * FROM analysis_description', function(err, rows, fields) { if (err) throw err; result.analysis_description = rows; console.log("query 2"); }) ]) .then(function(result){ console.log(result); console.log("result"); }); 输出: result query […]

承诺的节点骑士

我正在尝试使用骑士的评估function。 一个简单的例子: var Horseman = require('node-horseman'); var horseman = new Horseman(); horseman .open('http://google.com') .evaluate(function() { var promise = new Promise(function(resolve,reject){ setTimeout(function(){resolve("Hello")},2000); }); return promise; }) .then(function(mesg){ console.log(mesg); }) .close(); 我期待解决的价值“你好”被传递到下一个函数作为mesg参数当承诺履行,但相反,我得到以下错误: Unhandled rejection fn evaluate global code evaluateJavaScript@[native code] evaluate@phantomjs://platform/webpage.js:390:39 我错过了什么吗?

如何捕捉蓝鸟ENOENT?

因为fs.exists的弃用,我喜欢用蓝鸟捕捉ENOENT。 举个例子: .then(() => { return promisedFs.unlinkAsync(excelPath); }) .catch(ENOENT ERROR, () => { //do something }) .catch(all other errors, () => {//do something})

蓝鸟承诺与callback发电机

我如何让蓝鸟自动将.nodeify / .asCallback添加到生成的承诺? 在bluebird中,任何promise实例都可以附加到节点callback机制上: Promise.resolve('foo').asCallback(callback); 然而,有时可能不需要定义承诺本身,而是一种被调用的方法,每次都会返回一个新的承诺,如下所示: // create a new random number promise each time Promise.method((foo, callback) => Math.random()); // create a new random number promise each time using a generator Promise.coroutine(function *(foo, callback) { return Math.random(); }); 在这种情况下,如果我想附加一个callback处理程序的承诺,我不得不这样做“人为地”在最后,使用像这样一个临时的方法: // create a new random number promise each time using a generator Promise.coroutine(function *(foo, callback) { […]

节点JS – 处理多个查询(承诺,蓝鸟)

我很好,如果新的Node JS(我使用MongoDB,Express和Mongoose),我有以下问题: 有一个包含10个地址标识的数组,我需要在做其他事情之前检查所有地址是否在数据库中。 我知道mongoose使asynchronous查询,我试图使用蓝鸟( https://www.npmjs.com/package/bluebird )作出承诺,但仍然没有运气: 这里有一些尝试: 1 var checkIds = function(idsArray){ return new Promise(function(resolve, reject){ var result = undefined; idsArray.forEach(function(id){ Address.count({_id: id}, function(err, count){ //count is 0 if id does not exist if(err || !count){ reject(false); } }); resolve(true); }); } } 第2 var checkIds = function(idsArray){ return new Promise(function(resolve, reject){ var result = […]

承诺改变for循环的全局variables

我正在尝试做一些JavaScript代码的不同风格的基准testing,这里是我有: var Promise = require('bluebird'); var timer = function(name) { var start = new Date(); return { stop: function() { var end = new Date(); var time = end.getTime() – start.getTime(); console.log('Function:', name, 'finished in', time, 'ms'); } }; }; function regular (a, cb) { if (a % 2 === 0) return cb(null, a); return […]