Articles of ecmascript 2017

asynchronous等待node.js跳过第二个等待语句保存mongodb

我正在使用node.js ES6中等待asynchronous… async insertIngot(body, callback) { console.log('*** ItemsRepository.insertIngot'); console.log(body); const data = await this.getItemsTest(); console.log('*** getItems ok'); items = data.items; let item = new Ingot(); item.ingotName = body.ingotName; item.formulaName = body.formulaName; item.items = items; await item.save(); return item; } 第一个等待工作,然后跳过代码的其余部分,并引发错误: (node:16612)DeprecationWarning:Mongoose:mpromise(mongoose的默认承诺库)已被弃用,请插入自己的承诺库: http ://mongoosejs.com/docs/promises.html

节点7.10 – 它支持等待吗?

我在节点7.10上: $ node –version v7.10.0 我认为它支持await 。 let result = await Weather.findOne(options, function(err, weather) { if (err) { res.set('Content-Type', 'application/json'); return res.status(200).send('Error occurs: ' + err); } if (weather) { res.set('Content-Type', 'application/json'); return res.status(200).send(key + ' already exist.'); } return weather; }); console.log(result); 错误信息: let result = await Weather.findOne(options, function(err, weather) { ^^^^^^^ SyntaxError: Unexpected […]

避免在javascript中循环多个返回 – asynchronous/等待解决callback金字塔或callback地狱,

我有这个代码,有很多返回块,例如SignUp() connectors.js const connectors = { Auth: { signUp(args) { return new Promise((resolve, reject) => { // Validate the data if (!args.email) { return reject({ code: 'email.empty', message: 'Email is empty.' }); } else if (!isEmail(args.email)) { return reject({ code: 'email.invalid', message: 'You have to provide a valid email.' }); } if (!args.password) { return […]

正确地使用Promise和Await / Async

我在理解Promisefunction如何工作时遇到了一些问题,我以前使用过Bluebird,但是我想尝试学习新的await / async标准以提高程序员的性能。 我已经使用了asynchronous/等待,并在适当的地方创build了承诺,但是这些function仍然不按顺序执行。 我正在使用Webpack的最新版本的Node上运行这个,我没有得到任何有意义的错误。 它运行得很好,不像预期的那样。 运行它时我的输出是: Searching the Web for: Test String Web search Completed! Promise { <pending> } Response Handler Completed! 理想情况下,我希望它回应: Searching the Web for: Test String Response Handler Completed Web search Completed 然后返回我的响应处理程序的输出。 有谁能发现我的错误? const https = require('https'); // Replace the subscriptionKey string value with your valid subscription key. const subscriptionKey […]

节点repl与asynchronous等待

我想添加对asynchronous/等待到节点repl的支持 在这个问题之后: https : //github.com/nodejs/node/issues/8382 我试图使用这一个https://github.com/paulserraino/babel-repl但它是缺lessasynchronous等待suppport 我想用这个片段 const awaitMatcher = /^(?:\s*(?:(?:let|var|const)\s)?\s*([^=]+)=\s*|^\s*)(await\s[\s\S]*)/; const asyncWrapper = (code, binder) => { let assign = binder ? `root.${binder} = ` : ''; return `(function(){ async function _wrap() { return ${assign}${code} } return _wrap();})()`; }; // match & transform const match = input.match(awaitMatcher); if(match) { input = `${asyncWrapper(match[2], match[1])}`; } […]

尝试在摩卡中使用asynchronous/等待

我想在摩卡中使用asynchronous/等待,以使我的testing。 我已经阅读了很多文章,但是我没有find解决scheme。 我已经安装了所有的babel模块来编译代码,但是它不起作用。 这里是我的代码里面的“testing”文件夹: import test from 'mocha' import 'babel-polyfill' import { expect } from 'chai' import { assert } from 'chai' import utils from '../lib/utils' describe('long number', function () { it("Sample", mochaAsync(async () => { var x = utils.longNums(0); expect(x).to.equal(5000); })) }) 这里是我的package.json,我使用所有的babel依赖和插件,我已经阅读我必须安装,我的testing脚本,我build议摩卡使用巴贝尔transpiling { "name": "pos_lisa-test", "version": "1.0.0", "description": "pos lisa test", "main": "index.js", […]

链接asynchronousfunction?

let val = 0; async function first() { console.log('1a', val); second(); console.log('1b', val); } async function second() { console.log('2a', val); third(); console.log('2b', val); } async function third() { console.log('3a', val); val = await new Promise(function (resolve, reject) { setTimeout(function () { resolve(3); }, 1000); }); console.log('3b', val); } console.log('0a', val); first(); console.log('0b', val); 我期待: 0a […]

使用await时意外的标识符

我目前正在尝试使用asynchronous/等待一个函数,要求循环是同步的。 这是function: async channelList(resolve, reject) { let query = ['channellist'].join(' '); this.query.exec(query) .then(response => { let channelsRaw = response[0].split('|'); let channels = []; channelsRaw.forEach(data => { let dataParsed = ResponseParser.parseLine(data); let method = new ChannelInfoMethod(this.query); let channel = await method.run(dataParsed.cid); channels.push(channel); }); resolve(channels); }) .catch(error => reject(error)); } 当我尝试运行它时,我得到这个错误: let channel = await method.run(dataParsed.cid); ^^^^^^ […]

我怎样才能在顶层使用asynchronous/等待?

我一直在asynchronous/等待,经过几篇文章,我决定自己testing一下。 然而,我似乎无法绕过我的头为什么这是行不通的: async function main() { var value = await Promise.resolve('Hey there'); console.log('inside: ' + value); return value; } var text = main(); console.log('outside: ' + text) 控制台输出以下内容(节点v8.6.0): >外:[object promise] >里面:嘿,那里 为什么函数内部的日志消息之后执行? 我认为asynchronous/等待创build的原因是为了执行使用asynchronous任务的同步执行。 有没有办法可以使用函数内返回的值,而不使用main()后面的.then() main() ?

asynchronousfunction – 等待不等待承诺

我试图学习asynchronous等待。 在这个代码中 – const myFun = () => { let state = false; setTimeout(() => {state = true}, 2000); return new Promise((resolve, reject) => { setTimeout(() => { if(state) { resolve('State is true'); } else { reject('State is false'); } }, 3000); }); } const getResult = async () => { return await myFun(); } […]