Tag: 诺言

parsing云代码“第一个”查询数组返回不同的结果

我有一个简单的查询如下: var getGreaterQuestion = function (gid) { var query = new Parse.Query(Parse.Object.extend("Question")); query.equalTo("groupId", gid); return query.first(); } 我正在准备一个由这个函数组成的数组: var groupIds = _.range(1, 17); var groupIdAndRandomNumberPack = _.map(groupIds, function (gid) { return {groupId: gid, random: Math.random()}; }); var pack = _.map(groupIdAndRandomNumberPack, function (queryItem) { return getGreaterQuestion(queryItem.groupId, queryItem.random); }); 在pack数组中, Question类有16个不同的“第一”查询。 我正在使用下面的代码片段运行此查询: return Parse.Promise.when(pack).then(function () { console.log("arguments […]

Mongodb节点驱动2.0。*与Bluebird 2.9。* promisification

所以围绕这个主题还有一些其他的疑问,比如: 我怎样才能使用蓝鸟提供MongoDB本地的Javascript驱动? 然而,它似乎并没有解决最新版本的驱动程序,这似乎有问题,当试图promisify时。 目前我可以通过执行MongoClient工作: Promise.promisifyAll(mongodb.MongoClient); // Using .Prototype here fails to promisify 然而,无论我尝试着什么,Collections似乎都不会使用*async调用操作,它可能会调用它们,但是它们永远不会被解决或被拒绝,所以它们只能被挂起。 历史上在以前的版本,你只会Promise.promisifyAll(mongodb) ,你已经完成了,但我不确定如何正确处理这个新的驱动程序。 下面是一个使用mongo direct promisification connectAsync创build的集合的示例输出,然后从返回的数据库获取集合。 一旦我尝试在集合上做任何事情,它只是挂起,承诺不会从它回来: { s: { pkFactory: { [Function: ObjectID] index: 14727641, createPk: [Function: createPk], createFromTime: [Function: createFromTime], createFromHexString: [Function: createFromHexString], isValid: [Function: isValid], ObjectID: [Circular], ObjectId: [Circular], createPkAsync: [Object], createFromTimeAsync: [Object], createFromHexStringAsync: [Object], isValidAsync: [Object], bindAsync: [Object], […]

Mongoose with Bluebird promisifyAll – 对模型对象的saveAsync结果作为已解决的承诺值

我用蓝猫的promisifyAll与mongoose。 当我在模型对象上调用saveAsync(保存的promisified版本)时,完成的promise的parsing值是一个包含两个元素的数组。 第一个是我保存的模型对象,第二个是整数1 。 不知道这里发生了什么事。 下面是重现问题的示例代码。 var mongoose = require("mongoose"); var Promise = require("bluebird"); Promise.promisifyAll(mongoose); var PersonSchema = mongoose.Schema({ 'name': String }); var Person = mongoose.model('Person', PersonSchema); mongoose.connect('mongodb://localhost/testmongoose'); var person = new Person({ name: "Joe Smith "}); person.saveAsync() .then(function(savedPerson) { //savedPerson will be an array. //The first element is the saved instance of person //The […]

使用node.js进行Javascriptasynchronousexception处理

我目前正在研究一个node.js应用程序,我有通常的asynchronous代码问题。 我正在Node的HTTP模块上实现一个服务服务器。 这个服务器支持(表示)路线。 例如,我有这样的代码: server.any("/someRoute",function(req,resp){ resp.end("this text is sent to clients via http") }); 服务器需要能够承受失败,当传递给任何一个函数有问题时,我不想让整个服务器崩溃。 当我写代码看起来像这样的问题发生: server.any("/someRoute",function(req,resp){ setTimeout(function(){ throw new Error("This won't get caught"); },100); }); 我不明白我怎么可能在这里发现错误。 我不想通过一个服务器端故障使服务器崩溃,而是想要服务500。 我能想出的唯一解决scheme实际上并不具有performance力。 我只想出了使用process.on("uncaughtException",callback)和类似的代码使用节点0.8 Domains (这是一个部分的补救措施,但领域是目前越野车,这仍然不是很有performance力,因为我最终不得不创造每个句柄的一个域)。 我想完成的是throw一个函数的throw动作绑定到一个作用域,理想的解决scheme就像将所有抛出的错误从一个函数绑定到一个特定的处理函数一样。 这可能吗? 在这种情况下处理错误的最佳做法是什么? 我想强调的是,它应该能够继续服务请求后,不良请求,并重新启动服务器的每个请求或创build域的每个处理程序和捕获他们的未捕获的exception对我来说似乎是一个坏主意。 另外 – 我听到承诺可能会帮助我(有关兑现承诺的事情),可以承诺在这种情况下援助我吗?

我如何处理承诺的错误?

作为节点程序员。 我习惯于使用“nodebacks”来处理我的代码中的错误: myFn(param, function(err, data) { if (err){ //error handling logic } else { // business logic } }); 在编写这个函数时,我可以这样做: var myFn = function(param, callback){ var calc = doSomeCalculation(param); if(calc === null) { // or some other way to detect error callback(new Error("error with calculation"), null); } … someAsyncOp(calcN,function(err, finalResult){ if(err) return callback(err, null); callback(null, […]

testing是否在Nodejs中使用Jasmine解决或拒绝承诺

我知道如何在摩卡做到这一点,但想知道如何用茉莉花做到这一点。 我试过这个 describe('test promise with jasmine', function() { it('expects a rejected promise', function() { var promise = getRejectedPromise(); // return expect(promise).toBe('rejected'); return expect(promise.inspect().state).toBe('rejected'); }); }); 然而,国家总是在pending ,当然,testing失败。 我找不到任何在线的例子,我可以使它工作。 有人可以帮我这个吗? 谢谢。