Tag: 承诺

问题得到妥善承诺失败后function运行失效

我试图拒绝一个承诺,似乎在工作,但并不像预期的那样。 Parse.Promise.as(1).then(function() { var vendor = user.get('vendor'); if (vendor) return vendor.fetch(); else return Parse.Promise.error("No vendor found"); }, function() { //specific promise error for this particular promise res.redirect('/vendor/signup'); }).then(function(result) { var vendor = result; res.render('vendor/dashboard.ejs', { 'user': user, 'vendor': vendor }); }).fail(function(error) { //general catch all error controller res.render('error.ejs', { 'error': error }); }); 如果承诺失败的第一部分,它试图加载供应商,我想错误的redirect。 相反,它正在下降到结局失败。 […]

testing蓝鸟承诺与Nodejs誓言(BDD)

我遇到了一些问题,比如如何正确构build我的Promise返回API的testing topic:function() { return myfunc() { /* returns a Bluebird Promise */ } }, 'this should keep its promise':function(topic) { var myfunc = topic; myfunc() .then(function(result) { assert(false); }) .catch(function(error) { assert(false); }) .done(); } 我的誓言永远不会失败。 这是我第一次尝试使用誓言来testing承诺。 希望有人熟悉这一点会伸出援助之手。 提前,谢谢。 恩里克

嵌套承诺陷入困境

以下代码卡住了: var Promise = require('promise'); var testPromise = function(){ return new Promise(function(fulfill, reject){ element.all(by.repeater('item in menu.items')).first().then(function(el){ console.log('test f'); fulfill(el); console.log('test fe'); }); }); }; …被以下所称: testPromise().then(function(el){ console.log('test successful '+el); }); 控制台打印 test f test fe 并没有更多的代码被执行。 它永远不会达到那个尽pipe履行被称为。 如果使用嵌套promise是一个反模式,那么如果没有嵌套promise,我该怎么做: var getMenuItemEl = function(itemName){ return new Promise(function(fulfill, reject){ var elFound; element.all(by.repeater('item in menu.items')).then(function(els){ async.each(els, function(el, callback){ el.getText().then(function(text){ […]

使用蓝鸟承诺

我有我的人的function,在它内部调用这样的承诺函数 var myPeople = function(){ var go; return new Promise (function(resolve){ User .getPeople() .then(function(allPeople){ go = allPeople; //console.log(go) resolve(go); }) }) return go; } 如果我login我的去块内我得到我的对象,但我不能得到它返回此对象..

在承诺中引发的exception不会显示

我正在开发一个严重依赖于Promise的节点模块。 出于某种原因,当Promise代码中出现exception(例如“undefined不是函数”)时,exception消息不会显示在控制台中 – promise链似乎停止了,没有任何反馈,我只能做猜猜是什么原因造成的。 我如何强制Node显示所有exception?

NodeJS使用条件语句顺序asynchronous

是否有可能编写NodeJS代码,以顺序方式执行几个asynchronous步骤,其中一些步骤是基于条件语句执行还是绕过? 让我试着用伪代码写一个例子。 想象一下你有类似的东西 step1.then(step2).then(step3); 现在让我们添加一个选项: var opt = true; 怎么可能做到这样的事情: step1.then(opt && step2).then(step3); 或者,如果我们在中间说了两个不同的可能步骤: step1.then(opt ? step2 : step3).then(step4); 编辑 如果可选步骤是在开始呢? (opt && step1).then(step2).then(step3); 如果有人能够提出一些build议或提出build议,那将是非常棒的! 谢谢

使用ElasticSearch javascript客户端创build索引,promise不会返回

从一个小时以来,这是一直让我疯狂的事情。 我正在开发一个涉及使用Javascript访问ElasticSearch的项目。 作为testing的一部分,我想创build一个索引。 这里是一个非常简单的代码片段,在我看来,应该这样做,并打印从ElasticSearch服务器返回的消息: var es = require('elasticsearch'); var es_client = new es.Client({host: "localhost:9200"}); var breaker = Math.floor((Math.random() * 100) + 1); var create_promise = es_client.indices.create({index: "test-index-" + breaker}); create_promise.then(function(x) { console.log(x); }, function(err) { console.log(err);}); 当我进入一个目录时,运行npm install elasticsearch ,然后用NodeJS运行这个代码,会发生什么,请求是否发生,但是由于某种原因,promise不会返回。 我希望这个代码运行到最后,并且一旦ES服务器的响应回来,就完成了。 相反,这个过程只是挂起。 任何想法为什么? 我知道一个索引可以通过添加一个文档来创build,但是这个奇怪的行为只是使我感到困惑,我无法弄清楚它的原因或意义。

有没有替代弃用的deferred.callback?

问题 我发现以下相当详细的模式通常出现在我的代码中,当我包含给我很难promisify对象的库: var object = crummyLibrary.create(); return new Promise(function(resolve, reject){ object.method('foo', function(err, bar){ if(err){ reject(err); }else{ resolve(bar); } }); }); 对于Promise.defer()这个过去并不那么冗长: var deferred = Promise.defer(); object.method('foo', deferred.callback); return deferred.promise; 但现在已经废弃了(出于很好的理由),但是我还没有find这个模式的一个很好的替代品。 我知道有这样的: return Promise.promisify(object.method, object)('foo'); 但是,由于context / receiver的传递,它感觉很尴尬。 我在找什么 我希望能取代旧的deferred.callback ,也许是沿着以下的路线: var promise = new Promise; object.method('foo', promise.callback); return promise; 或者可能: return new Promise(function(resolve, reject, callback){ […]

Promisify prompt.js

最初问GitHub 我正在努力promisify prompt.js。 谁能说我做错了什么? var prompt = require('prompt'); var Promise = require("bluebird"); Promise.promisifyAll(prompt); prompt.start().then(function() { console.log("test"); return true; }); prompt.get(['message'], function(err, result) { if (err) { return onErr(err); } console.log('Write a push Message repositoryName:'); console.log(' Message: ' + result.message); return result; }).then(function(result) { console.log("hello"); return result; });

将asynchronous工作stream更改为Promise(Bluebird)

我一直在试图把我的头围绕诺言。 对于我理解的基本概念,一旦嵌套,我有点困惑。 任何反馈意见 这里是我试图重构到承诺(蓝鸟)的代码 var getIndividualData = function(url, doneGetIndividualData) { var $, data; request(url, function(err, res, body) { if (!err && res.statusCode === 200) { $ = cheerio.load(body); data = { title: $("#itemTitle").children()["0"].next.data, condition: $("#vi-itm-cond").text(), price: $("#prcIsum_bidPrice").text(), imgUrl: $("#icImg")[0].attribs.src, createdAt: chance.date(), likes: chance.integer({min: 0, max: 1000}) }; doneGetIndividualData(null, data); } else { doneGetIndividualData(err); } }); […]