Tag: 保证

无法读取未定义的属性'then',bcrypt.hash()

我试图创build一个testing用户,在我需要散列密码的摩卡testingbefore块。 显然,如果使用promise,则不需要done()函数 。 我正在执行bcrypt.hash就像它在bcrypt文档中所说: before(function(){ //create a user and populate user's first recipes //create a User object return bcrypt.hash('newt', 10).then(function(err,hash){ //create the user object var user = new User({email:'test@test.io',username:'test',password:hash}) //save that user user.save() }) }) 但是,当我运行testing时,它给了我一个错误: TypeError: Cannot read property 'then' of undefined 是什么赋予了? 谢谢。

Promise中的承诺有多重拒绝,究竟发生了什么?

Promise.all([iterable])是全部或全部,这意味着它承诺的答复决定了当迭代器中的每一个承诺解决或拒绝,只要一个承诺拒绝,拒绝的第一个承诺的理由( 文档 )。 但是,如果迭代拒绝的多重承诺会发生什么呢? 在VSCode中,我尝试了下面的例子,故意让foo()和bar()承诺失败。 当我在VSCodedebugging时,我得到一个错误* catch(err => Promise.reject('错误查询栏()'))*说exception发生 ,我不明白为什么。 我想这是因为当我打电话Promise.reject Promise.all已经收到了foo函数的拒绝也失败了,但是不清楚发生了什么。 如果我禁用debugging选项中的“未捕获的exception”断点,则exception不再显示。 究竟发生了什么? function foo() { return pool.query('insert_test into test (value) values (20)') .then(() => client.query('insert into test (value) values (21)')) .catch(err => Promise.reject('error query bar()')) } function bar() { return pool.query('insert_test into test (value) values (20)') .then(() => client.query('insert into test (value) values […]

Node.js同步返回多个asynchronous收益的结果

我正在使用rethinkDB与node.js. 以下请求正常工作: function myFn () { return co(function *() { let query; query = yield r.db("my-db") .table("app") .filter(r.row("id").eq(id)) .run(conn); return query.toArray(); }); } 我想asynchronous返回多个yield的结果,但是下面的失败: function myFn () { return co(function *() { let query, query2; query = r.db("my-db") .table("app") .filter(r.row("id").eq(id)) .run(conn); query2 = r.db("my-db") .table("app") .filter(…) .run(conn); return yield {q1 : query, q2 : query2}; […]

什么时候应该使用Q.defer,何时应用Promise.resolve / reject?

我正在使用nodejs,想知道什么时候应该使用Q延迟,什么时候使用Promise.resolve / reject? 我看到了很多这样的例子,例如: // with Q defer fucntion oneWay(myVal) { var deffered = Q.defer(); if (myVal < 0) { deffered.reject(new Error('nope')); } else { deffered.resolve('yay'); } return deffered.promise; } // native Promise fucntion orAnother(myVal) { if (myVal < 0) { return Promise.reject(new Error('nope')); } else { return Promise.resolve('yay'); } } 有什么区别,什么时候使用difer是一个很好的做法? Promise.resolve / reject(native)和Q.resolve […]

如何正确处理Promise.all:获取undefined

我试图从一些对不同的REST API的请求中得到一个数组充满了信息。 我想使用Promise.all来做到这一点,但由于某种原因,它产生了一堆内部undefined的数组。 [undefined,undefined,undefined,undefined] 这是我的代码: var _ = require("lodash");//Used exclusively to check if the result from the request is an object var ccxt = require("ccxt");//External library used to make the requests let pairs = ["ETH/EUR", "BTC/EUR", "LTC/EUR", "BCH/EUR"]; //Array on which the Promise.all is based function test(p) { for (var i = 0; i < […]

鼓舞听众

我是一个巨大的承诺链,但是我意识到,其中一个函数返回一个对象,具有监听器,并响应像callback object.on('data', function(err, data) { //do something }); object.on('exit', function(err, data) { //do something }); 我想知道是否有办法使用承诺来实现这一点,并把它们变成可靠的。 有没有其他select重写我的整个承诺链使用callback?

如何在node.js中使用promise

所以,我有一个承诺支持nodejs: $ node -v v0.11.11 但是,当我尝试使用承诺我有一个错误: $ node –harmony test.js require, module, __filename, __dirname) { var promise = new Promise(fu ^ ReferenceError: Promise is not defined at Object.<anonymous> (/home/just-boris/coding/test.js:1:89) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:349:32) at Function.Module._load (module.js:305:12) at Function.Module.runMain (module.js:490:10) at startup (node.js:123:16) at node.js:1128:3 源代码在我的要点 我做错了什么? 此外,我尝试运行生成器示例 ,它的工作,所以这意味着es6function启用,除了承诺

在Node.js中处理未处理的拒绝

跟进问题重新。 陷阱when.js未处理的拒绝 Node.js process.on()示例阻止正常的console / prettymonitor输出显示。 有没有办法保留这一点。 另外文档显示:process.on('unhandledRejection',function(reason,key)not ..(promise,reason)。ref: http : //github.com/cujojs/when/blob/master/docs/debug- api.md

我怎样才能使用蓝鸟Promiseify节点的游标和/或集合'toArray()mongodb模块?

相关软件包: "dependencies": { "mongodb": "1.4.x", "bluebird": "2.3.x" } 我看过: 我如何使用蓝鸟promisify MongoDB原生的Javascript驱动程序? 蓝鸟Promisfy.each,for循环和if语句? https://stackoverflow.com/a/21733446/438992 蓝鸟的promisification文件 其他一些地方 我困在findAsync({}) 。 我更喜欢一个游标,但是很less有我想要调用toArray() 。 这也是可能的,我完全错了。 MongoClient.connectAsync('mongodb://127.0.0.1:27017/sr') .then(function(_db) { db = _db; return db.collectionAsync('posts'); }) .then(function(colPosts) { return colPosts.findAsync({}); }) .then ( A MIRACLE OCCURS ) .catch(function(e) { console.log(e); }) .finally(function() { if (db) db.close(); }); 在奇迹发生的地方,我想要迭代游标结果或数组集合。 我在解决如何解决这个问题方面遇到困难。

在settimeout内承诺

我试图在彼此延迟1秒的时间内执行承诺,因为我正在使用的API服务器每秒有一个请求限制。 这是我的代码目前 var delay = 0; return categories.reduce(function(promise, category) { var id = setTimeout(function() { promise.then(function() { return client.itemSearch({ searchIndex: configuration.SearchIndex, CategoryID: category.id, Keywords: currentKeyword }).then(function(results) { var title = results[0].Title; var cat = category.name; var price = results[0].Price; return db.insertProduct(title, cat, price); }); }).catch(function(err) { console.log("error", err); }); }, delay * 1000); delay += […]