Tag: asynchronous

我应该如何在Javascript中使用node.js和Mongodb实现asynchronousfunction?

到目前为止,我已经看到,有setTimeout() , process.nextTick(function)的asynchronousfunction,但我不知道如何使用它。 我试过我的代码,因为我现在需要一个asynchronousfunction,但它将Can't set headers after they are sent. 这是我的代码: var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost:27017/myproject'; var updateRecord = function(db, req, callback) { db.collection('documents').updateMany({ 'Item Description': req.body.itemDescrip }, { $set: { 'Issued QTY': req.body.issueQty } }, function(err, results) { if (err) return callback(err); console.log('Done'); console.log(results); var cursor = db.collection('documents').find({ 'Item Description': req.body.itemDescrip, […]

为什么在express路由中调用next()是可选的?

在Nodejs / Express的许多例子中,我看到在成功的情况下调用next()是可选的。 exports.postLogin = (req, res, next) => { passport.authenticate('local', (err, user, info) => { if (err) { return next(err); } req.logIn(user, (err) => { if (err) { return next(err); } req.flash('success', { msg: 'Success! You are logged in.' }); res.redirect(req.session.returnTo || '/'); }); })(req, res, next); }; 而且,在args中nextcallback也很容易: exports.postLogin = (req, res) => […]

我怎样才能访问其他尝试块try块中的variables?

http://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/在这个链接中,有一些代码可以在try catch中访问一个variables,但是当我尝试在我的服务器这是不行的,因为它超出了范围。 我怎样才能做到这一点? try { const foo = "bar" } catch (e) { console.log(e) } try { console.log(foo) -> is not defined } catch (e) { console.log(e) }

testing一个then()块内的代码

所以我使用React和Mocha / Chai / Enzyme / Sinon进行testing。 我有很多asynchronous调用在我的组件,我想testing后来的代码,但不知道如何。 所以例如这是我的AddToCart组件内的reserveSession()方法: reserveSession() { this.props.reserveExam(id).then((json) => { // Code I want to test }).catch(…); } 这是我testing的当前设置: describe('AddToCartButton', () => { beforeEach(() => { props = { // set all props to empty or () => null } wrapper = mount(<AddToCartButton {…props} />) }); }); 所以我发现到目前为止,当我嘲笑this.props.reserveExam在每个之前,因为它不曾调用实际的function,它永远不会调用当时的代码,但如果我只是调用该方法不明白那是什么。 任何想法如何testing? 谢谢!

Nodejsasynchronous执行

我正在与我公司的数据库工作,我正在尝试build立一个路线。 我得到的数据是1000个值的JSON数组。 这里的function – router.get('some_route', function(req, res, next){ var ress = []; var name = req.params.name; baWelcomeController.autoComplete(name).then(function(succ){ var x = Object.values(succ[0][0]); res.status(200).send(x); }).catch(function(err){ res.status(404).send(err); console.log("error in router.get", err); }); }); 现在看看我的代码的object.values部分,从互联网我知道它的一个O(n)函数,所以nodejs应该推入到调用堆栈,同时执行其他function,但发生了什么是我得到预期的回应。 succ []中的值的数量是1000,所以我写了另一个函数注释Object.values,并写一个for循环, router.get('some_route', function(req, res, next){ var ress = []; var name = req.params.name; baWelcomeController.autoComplete(name).then(function(succ){ var x = 0; for(var i = 0; i […]

将asynchronous函数传递给Node.js Express.js路由器

这似乎是一个简单的谷歌,但我似乎无法find答案… 你能否将ES7asynchronousfunction传递给Express路由器? 例: var express = require('express'); var app = express(); app.get('/', async function(req, res){ // some await stuff res.send('hello world'); }); 如果没有,你能指出我在正确的方向如何处理这个问题ES7风格? 或者我只需要使用承诺? 谢谢!

在NPM开始下载模块

我想知道在其他代码运行之前是否有简单的方法来下载文件。 我需要首先从我的服务器下载file.js,因为我需要在我的应用程序在不同的地方。 我知道我可以做那样的事情。 let file = fs.createWriteStream(path.join(__dirname, 'file.js')); let request = http.get("http://expample.com/file.js", function(response) { response.pipe(file); }); 但是,如果我假设正确,该文件是asynchronous写入。 所以当我需要这个文件时,我只是空的对象或错误。 那么在npm start上首先同步下载这个文件的最好方法是什么?

asynchronousNPM模块不执行数组中的每个项目的setTimeout

我正在使用asynchronousNPM模块并编写了以下程序: var async = require('async'); var arr = [1,2,3,4]; async.each(arr, function (item) { setTimeout(function () { console.log('item: ', item); }, 1000); }, function (error) { console.log('error', error); }); 我期望控制台日志每1秒后显示,但它会在1秒后立即显示所有日志。 我该如何解决?

使用asynchronous/等待不工作

我有一个function,它做asynchronous数据库search操作。 var get_all_channels = function { return new Promise(()=> { db.find({type:'pricing'},{channel_name:1},function(err,docs){ if(err) return err; var c = [] docs.forEachOf(function(ch){ c.push(ch['channel_name']) }) return c; }) }) } async function send(){ return await get_all_channels() } function calculate(){ send().then(res => alert(res)) } 这里,上面的function不起作用。 我不知道为什么? 请帮我修复这个function。

什么可以是一个更好的方式来处理从nodejs项目中的控制器发送响应?

rooms.js – >控制器类的房间端点 router.get('/:roomid/fight/verify', function(req, res) { roomModel.authenticateUserForFight(req.params.roomid, req.query.otp, res); }); roomModel – >房间的模型类 //authenticate user based on otp provided on client side exports.authenticateUserForFight = function(roomid, otp, res) { db.query('select * from room where roomid=?', [roomid], function(error, rows) { if (rows.length == 0) { console.log("otp does not exist in db for room:" + roomid); } […]