Articles of async await

节点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", […]

如何asynchronous/等待在我的代码不起作用?

这个asynchronous/等待如何不起作用? 我已经花了整整一天尝试不同的组合,看video和阅读asynchronous/等待,find为什么这不起作用,然后张贴在这里。 我试图做第二个nodejs应用程序将运行在不同的端口,我的主应用程序将调用这个,所以它废弃一些数据,并将其保存到数据库caching。 它应该做什么:取一个关键字并将其发送给一个叫做scrapSearch的方法,这个方法创build一个完整的URI链接,并将其发送给实际获取该网页的方法,并将其返回给第一个调用者。 发生了什么:在返回结果之前触发初始调用下方的console.log。 控制台输出 Requesting : https://www.google.ca/?q=mykeyword TypeError: Cannot read property 'substr' of undefined at /DarkHawk/srv/NodesProjects/_scraper/node_scrapper.js:34:18 at <anonymous> app.js : 'use strict'; var koa = require('koa'); var fs = require('fs'); var app = new koa(); var Router = require('koa-router'); var router = new Router(); app .use(router.routes()) .use(router.allowedMethods()); app.listen(3002, 'localhost'); router.get('/scraptest', async function(ctx, next) […]

打字稿asynchronous/等待与Observable或承诺

我可以像这样使用async吗? 我async/await这里杀了async/await ? 下面的代码是没有错误的工作,我知道async/await只适用于Promise<T> 。 我的getItem是一个Observable 。 谢谢。 roleService.getItem({ page: p.pageIndex + 1, pageSize: p.pageSize }) .takeUntil(this.unsubscribe$) .map((res: ResponseDto) => <DtoModel>res.contentBody) .do(async (dto: DtoModel) => await this.subject.next(dto.content)) // working wihtout error .subscribe(async (dto: DtoModel) => await (this.pager = dto.pager), //working without error (error: any) => Observable.throw(error));

在Node.js中使用TypeScriptasynchronous等待

我发现不可能完成接下来的四件事情: 在Node.js中编写 在TypeScript中编写 使用async await debugging容易 说明: 我有一个在TypeScript中编写的Node.js项目,我正在使用async await 。 现在的问题是,如果我transpile到ES6,导入关键字会产生“意外的令牌导入”错误在这里讨论: ES6导入和导出不支持在Node.js ,而如果我transpile到ES5, async await变成不可读码: 这个: ///<reference path="../typings/modules/bluebird/index.d.ts" /> ///<reference path="../typings/modules/mongodb/index.d.ts" /> import * as Promise from 'bluebird'; import { MongoClient, Db } from 'mongodb'; import {Campaign} from "../classes/Campaign"; export async function getCampaigns(): Campaign[] { try{ var db = await connect(); var campaigns: Campaign[] = […]

asynchronous/等待请求内部护照策略

我到处寻找解决这个问题的答案,并尝试了不同的build议,但我仍然无法弄清楚。 我在护照中使用Steam API策略,在创build新的SteamStrategy后,我有一个callback函数来处理我的MongoDB集合。 我基本上只是检查当前login的用户是否在数据库中,如果没有,然后创build一个新的用户和.save()它到mongoDB。 这一切都工作正常,直到我决定我想要一个请求()蒸汽API一些额外的用户信息,我可以存储到新的用户。 但是,当我尝试将request()保存到variables和console.log()variables时,它总是表示为空。 我知道这是因为它是asynchronous运行的,但这就是为什么我等待,但没有成功。 我也尝试过实现一个callback – 地狱types的解决scheme,但遇到了一些严重的范围问题,我最后的陈述“return done(null,user)”; 无论如何。 如果有人能解释我的问题并提供解决scheme,那就太好了,谢谢! passport.use( new SteamStrategy( { returnURL: keys.returnURL, realm: keys.realm, apiKey: keys.steamAPI, proxy: true }, async function(identifier, profile, done) { const existingUser = await User.findOne({ steamInfo: { id: profile._json.steamid } }); if (existingUser) { middleware.updateMongo(existingUser); return done(null, existingUser); } ////////////////////////THE PROBLEM STARTS HERE///////////////////// const […]

asynchronous/等待Chrome远程界面的问题

我想testing这段代码,并等待直到它完成断言的结果。 不知道问题出在哪里,它应该在最后返回Promise.resolve(),但是在代码执行之前日志会end 。 Page.loadEventFired是否应该先await ? const CDP = require('chrome-remote-interface') async function x () { const protocol = await CDP() const timeout = ms => new Promise(resolve => setTimeout(resolve, ms)) // See API docs: https://chromedevtools.github.io/devtools-protocol/ const { Page, Runtime, DOM } = protocol await Promise.all([Page.enable(), Runtime.enable(), DOM.enable()]) Page.navigate({ url: 'http://example.com' }) // wait until the page […]

在asynchronous循环之后写入控制台

我试图做asynchronous循环,我做了一些事情,并在结束后,我写入控制台。 这是这样的: const http = require('http'); async function load(link) { try{ http.get(link, response => console.log(`File: ${link}`)); }catch(e){ console.log('error'); } } async function loop(arrayOfLinks) { for(let link of arrayOfLinks) load(link); } module.exports = (arrayOfLinks) => { (async () => { await loop(arrayOfLinks); console.log('Files: '+arrayOfLinks.length); })(); } 但是,我有: 文件:3 文件: http:// localhost:8000 / 1.jpg 文件: http:// localhost:8000 […]

asynchronous并等待一些IDE的错误

我试图使用aysnc并在我的项目中await ,我第一次尝试在FiddleJS这些,它工作正常,但是当我试图在我的IDE(PHPSTORM 2017)做到这一点我得到一个错误: async function test(url){ ^^^^^^^^ SyntaxError: Unexpected token function at createScript (vm.js:56:10) at Object.runInThisContext (vm.js:97:10) at Module._compile (module.js:542:28) at Object.Module._extensions..js (module.js:579:10) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) at Module.runMain (module.js:604:10) at run (bootstrap_node.js:389:7) at startup (bootstrap_node.js:149:9) 我也在vscode上试过,得到了同样的错误。 这是我试图做的: async function test(url){ console.log(await check(url) ); } app.get('/test', (req, res) => { […]

Mongooseasynchronous/等待与Koa卡住await Model.findOne()。exec()

我有一个Koa 2应用程序,并通过这个函数来处理/注册: import User from 'models/user'; export const signup = async (ctx, next) => { const { email, password } = ctx.request.body; try { const existingUser = await User.findOne({ email }); if (existingUser) { ctx.body = { error: 'Email is in use' }; return next(); } const user = new User({ email, password, }); await […]