Tag: 承诺

Node.js没有使用promise第一次更改数据

我有这个问题白我的代码,我有一种数据,我需要获得最新的时候,用户要求它,我使用承诺获得正确的数据,这部分工作正常。 我的下一个问题是我第一次要求的数据,它的返回没有什么,但是,如果我点击agin的数据,它返回正确的数据,所以这里有一些错误。 我的承诺function var insert = new Promise(function(fulfill) { fulfill('test'); }); 我的出口模块 exports.signup = function(db, user_conf) { var self = this; defineUser(user_conf); insert.then(function(result) { self.json_response = result; console.log(result); }).catch(function(e) { console.log(e); }); return self.json_response; } 我的快速路线function router.post('/signup', function(req, res, next) { var post = req.body; json_response = users.signup(req.db, { 'fullname' : post["account-fullname"], 'username' : post["account-username"], […]

如何在没有.then的节点js上获得promise的值

我在节点js上承诺有一些问题。 这是我的示例代码: var p1 = new Promise(function(resolve, reject) { // my function here }); p1.then(function(result){ // my result }); 这个代码是工作,但要从p1获取值我必须使用.then方法和我的结果值可以访问只是在p1.then。 如何访问P1值没有呢? 低于我的预期结果: var p1 = new Promise(function(resolve, reject) { // my function here }); var abc = NextFunction(p1); 因为p1的值将被用在我的下一个外部variablesp1的代码上,那怎么办呢。 谢谢

在节点中validation用户时获取奇怪的输出

我创build了一个抓取用户email & password的函数,然后在数据库中运行一些检查来查看细节是否有效。 如果细节是有效的,那么用户将被parsing回API密钥。 但由于某种原因,一些函数被调用之前其他人,我得到undefined的variables,这是假设是返回userObj 。 在这个函数中,我添加了控制台日志0,1,2,4和5,所以当我调用函数时,你可以看到奇怪的输出。 我将在下面包含我的代码和控制台输出! 我使用sequalize模型,我知道他们正在返回正确的数据,因为我已经testing了它。 我也在使用promises 。 码: var auth = { login: function(req, res) { var email = req.body.email || ''; var password = req.body.password || ''; // If nothing parsed, return json obj if (email == '' || password == '') { console.log("1"); res.status(401); res.json({ "status": 401, "message": "Invalid […]

承诺的复杂sorting – 嵌套

经过大量的search,我还没有能够确认这个问题的正确方法。 下面的代码按预期的方式运行,但我有一个严重的感觉,我没有以正确的方式来处理这个问题,而且我正在设法解决问题。 以下代码由主app.js文件启动,并通过一个位置开始加载XML文件并将其加工到mongoDB exports.processProfiles = function(path) { var deferrer = q.defer(); q(dataService.deleteProfiles()) // simple mongodb call to empty the Profiles collection .then(function(deleteResult) { return loadFilenames(path); // method to load all filenames in the given path using fs }) .then(function(filenames) { // now we have all the file names lets load and save filenames.forEach(function(filename) { // […]

蓝鸟承诺每个返回的结果

即时通讯使用蓝鸟来链接nodejs中的几个幽灵相关的任务。 我的问题是,最后在链中得到的parameter passing给每个作为结果,而不是scrapDomain函数的结果 我已经搞了两天了,请帮忙吗? 承诺链: Promise .each(domains, function(domain) { return ensureDir(domain[0]) }) .each(ssHome) .each(function(domain){ return scrapDomain(domain).then(function(results){ return results }) }) .then(function(results){ console.log(results) })

我想通过使用node.js完成所有的承诺后在mongodb中插入数据

我使用承诺推送数组中的错误,但在它推动数组中的错误之前,它检查插入数据的条件,就像我插入数据。 var errorsArr= []; var username = new Promise(function(resolve,reject){ User.findOne({ "username": req.body.username },function(err,user){ if(err) reject(err); if(user) { resolve(1); }else{ resolve(0); } }); }); username.then(function(data){ if( data == 1 ) errorsArr.push({"msg": "Username already been taken."}); }).catch(function(err){ console.log(err); }); var email = new Promise(function(resolve,reject){ User.findOne({ "email": req.body.email },function(err,user){ if(err) reject(err); if(user) { resolve(1); }else{ resolve(0); } }); […]

当承诺链parsing时执行函数

我已经编写了使用Q.reduce机制的代码,其中函数insertItemIntoDatabase(item)返回parsing的promise。 items.reduce(function(soFar,item) { return soFar.then(function() { return insertItemIntoDatabase(item); }); },Q()); 是否有任何可能性等待链完成,然后执行另一个function,或者我应该用其他方式链接这些function。 提前感谢您的帮助

如何使用promise和vo.js返回Hapi答复

我有一个asynchronous的nightmare.js过程,它使用vo.jsstream程控制和一个生成器: vo(function *(url) { return yield request.get(url); })('http://lapwinglabs.com', function(err, res) { // … }) 这需要使用reply()接口返回对Hapi(v.13.0.0)的承诺。 我已经看到Bluebird和其他承诺库的例子,例如: 如何从hapi.js路由处理程序之外进行回复 ,但是无法适应vo.js. 有人可以提供一个这样的例子吗? server.js server.route({ method: 'GET', path:'/overview', handler: function (request, reply) { let crawl = scrape.doCrawl({"user": USERNAME, "pass": PASSWORD}); reply( … ).code( 200 ); } }); scrape.js module.exports = { DoCrawl: function(credentials) { var Nightmare = require('nightmare'); var […]

混合asynchronous操作(callback和承诺)完成后如何执行任务?

我在写一些nodejs应用程序。 我的应用程序有一些npm模块的依赖。 在一个任务中,涉及两个asynchronous操作,两个asynchronous操作是以callback和承诺的forms。 下面我把一些示例代码: // the task which should be performed after async operation var myTask = function(){ // do something } // first async operation in the form of callback cbapi(myTask) // second async operation in the form of promise promiseapi() .then(myTask) 在上例中,当第一次asynchronous和第二次asynchronous操作完成时, myTask将执行两次。 但是,我想要的是只有在两个asynchronous操作完成后才执行一次。 有没有办法做到这一点?

Q.js承诺与节点。 缺less`socket`上的error handling程序。 TypeError:不能调用未定义的方法

我用nodejs和承诺的新手,我用npm安装Q.js : npm install q 我试着哟做一个承诺,当我查询postgres,这是我的代码… socket.on('Operation', function (data) { ……. getElementInPostgres(makeQuery) .then(function (name) { console.log("promiseeee then"); …….blablabla }) .fail(function (err) { console.log("promiseeee error"); }); …………. function getElementInPostgres(makeQuery){ console.log("entro getElementInPostgres"); var deferred = Q.defer(); client.query( makeQuery, function(err, result) { if (err) { console.log("NO getElementInPostgres"); console.log(err); deferred.reject(err); } else { console.log("ok getElementInPostgres"); console.log(result); deferred.resolve(result); } return […]