Tag: 同步

由于asynchronousnodejs,无法将数据添加到数组中

api.get('/getfavourites',function(req,res) { var userid = req.param('userid'); array = []; User.findById({_id: userid}, function (err, users) { if (err) { res.send(err); return; } else { var i; var length = users.favouriteid.length; for (i = 0; i < length; i++) { var temp = {eid: users.favouriteid[i].eventid}; Event.findById({_id: temp.eid}, function (err,events) { if (err) { res.send(err); return; } else […]

在node.js中pipe理嵌套的asynchronousforeach循环

传统上,在同步语言中,诸如具有两个嵌套的foreach循环的任务有条件地退出将是一件容易的事情,例如: return new Promise(resolve, reject){ AnArray.forEach(anElement){ ACONSTANTARRAY.forEach(ACONSTANTELEMENT){ if(anElement === ACONSTANTELEMENT){ resolve(bar); } } } resolve(foo); } 但是,因为foo会立即得到解决,处理这种情况的最好办法是什么? 我将不得不将这个变成多个Promise.all(array.map(function(){})调用吗?看起来丑陋,过于复杂,难以理解。

为什么我的快速代码中的下一个function不能正常工作?

所以基本上我正在尝试使用下一个同步执行function但是它不同步发生:Route.JS router.post('/era',function(req,res,next){ console.log("got request"); controlleri.book(req,res,next); booking_controller.book(req,res); console.log("done in server.js"); next(); }); controlleri.book和booking_controller.book都有数据库调用,但是尽pipe在controlleri.book中添加了next(), booking_controller.book开始执行,然后在第一个函数中调用next。 告诉我是否需要这两个function。 编辑: 尝试使用asynchronous库仍然不会同步代码: router.post('/era',function(req,res){ console.log("got request"); async.series([ function(callback){ console.log("hi"); controlleri.book(req,res); callback(null); }, function(callback){ console.log("hias"); booking_controller.book(req,res); callback(null); } ]); 第二个function在完成第一个function前开

Nodejs识别asyntasks的输出

我是nodejs的新手,我使用请求nodejs api发出多个get请求,用这个,我无法弄清楚某个特定请求的输出。 如何分别识别每个请求的响应? 我正在使用for循环发送多个请求。 如果我使用recursion,它再次成为同步,我只需要分开请求与响应太asynchronous。 可能吗 ? 在下面的代码中,variables'i'被上次迭代replace。 var list = [ 'http://swoogle.umbc.edu/SimService/GetSimilarity?operation=api&phrase1=%20Mobiles%20with%20best&phrase2=Mobiles%20with%20best', 'http://swoogle.umbc.edu/SimService/GetSimilarity?operation=api&phrase1=%2520Mobiles%2520with%2520best&phrase2=what%20is%20a%20processor'] function ss(list){ for(var i in list) { request(list[i], function (error, response, body) { if (!error && response.statusCode == 200) { console.log( i + " " +body); } }) } }

如何确保在Node.JS的一个循环中阻塞

虽然我通常喜欢Node.JS的callback函数,但是我发现由于SQLite问题,我的代码的某个部分需要以阻塞的方式运行。 (是的,我知道我可以尝试和解决SQLite的一部分,它确实是更有意义,以确保阻止。) 我喜欢使用asynchronous模块,虽然我有一种感觉,模块有一个可以在这里使用的function,我似乎无法find它。 或者,也许有一个更好的模块。 无论如何,毫不犹豫: func = function(callback) { let i = 0; arr.forEach(val => { if (val.trim().length > 0) { console.log(`Starting for user ${val}.`); let mylc = new lcapp(val); ////// TODO this needs to be made sycnronous. ///// async.series({ getMyDetails: callback => getMyDetails(mylc, callback) }, (err, results) => handleResults(err, results, mylc, callback)); ///////////// } […]

在与database-nodeJS的连接上同步elasticsearch

目标 :将elasticsearch与postgres数据库同步 为什么 :有时候新networking或群集/服务器会中断,以便将来的更新应该被logging 本文https://qafoo.com/blog/086_how_to_synchronize_a_database_with_elastic_search.htmlbuild议我应该创build一个单独的表updates ,它将同步elasticsearch的id ,允许从上一条logging(在elasticsearch中)select新的数据(从数据库)。 所以我想如果我可以loggingelasticsearch的失败和成功的连接:如果client成功返回(返回一个承诺),我可以启动一个函数来同步logging与我的数据库。 这是我的elasticConnect.js import elasticsearch from 'elasticsearch' import syncProcess from './sync' const client = new elasticsearch.Client({ host: 'localhost:9200', log: 'trace' }); client.ping({ requestTimeout: Infinity, hello: "elasticsearch!" }) .then(() => syncProcess) // successful connection .catch(err => console.error(err)) export default client 这样,我甚至不用担心运行cron作业(如果问题1是正确的),因为我知道集群正在运行。 问题 syncProcess会在export default client之前运行吗? 我不想在同步时进入任何请求… syncProcess只能运行一次(因为它被caching/不导出),无论我import多less次elasticConnect.js 。 正确? 使用updates表的方法是否有任何优势,而不是从父/源表中select数据? […]

如何在NodeJS的同步请求中添加参数

我已经尝试了以下内容: var request = require('sync-request'); var res = request('POST', 'http://someurl.com', { body: { 'city': 'Dubai' } }); 但是在服务器上没有得到任何参数。

如何在节点js中同步执行循环

我有82个项目在我的集合,即博客。我想把整个写入文件,使每个文件应该有10个博客。所以我的82我得到9个文件。我写的代码为ffollows blogList.forEach(function(i,v){ async.waterfall([ function (done) { if ((v !== 0) && (v%10 === 0)){ var appendData = blogList.splice(0,10); if(v === 10) { pageNum = 1; } else { pageNum = v.toString()[0]; } done('',appendData); } },function (testData,done) { try { var testingData = testData.toString(); testData.forEach(function(k,l){ fs.readFile(tagFileReferance, function read(err, referanceData) { if (err) { helper.logs('prepareAmpBlogList','blog',err,'console'); throw err; […]

我如何确保在响应传入的请求(Swagger / Express)之前已经返回一个承诺,

我正在尝试编写一个简单的Swagger API,可以让我根据需要同步一些系统。 同步是一种方式,所以基本上最终的目标是向两个系统发送一个请求,看看有什么新的/改变/删除的原点,然后更新目的地。 我一直在尝试使用node.js来代替Java,我习惯于这种学习方式,但是由于asynchronous性质,我真的很难找出一个关键问题。 作为一个testing,我在IntelliJ上构build了一个简单的Express node.js应用程序,在其中一条路线中,我调用了从另一个文件导出的函数,并尝试获取响应。 不幸的是,这不是很好。 我所做的是这样的: getit.js – (这是Ron Swanson生成器得到一个报价) const rp = require('request-promise'); async function dorequest() { const response = await rp(uri); return Promise.resolve(response); }; module.exports = {dorequest} 在我这样做的路线中: var getit = require ('./getit.js'); /* GET users listing. */ router.get('/', function(req, res, next) { var ret = getit.dorequest(); res.send(ret); console.log('res out' + […]

自定义节点同步function

节点提供了两种风格的核心function,同步和asynchronous。 像fs.readFileSync这样的同步function对启动应用程序非常有用,例如在npm包dotenv中。 是否有可能编写一个自定义Sync函数,不需要async和await关键字,从而绕过承诺和callback地狱?