Questions tagged «ecmascript-2017»

20
在forEach循环中使用异步/等待
在循环中使用async/ 是否有任何问题?我试图遍历文件数组和每个文件的内容。awaitforEachawait import fs from 'fs-promise' async function printFiles () { const files = await getFilePaths() // Assume this works fine files.forEach(async (file) => { const contents = await fs.readFile(file, 'utf8') console.log(contents) }) } printFiles() 这段代码确实有效,但是这可能出问题吗?我让某人告诉我,您不应该在这样的高阶函数中使用async/ await,所以我只是想问一下这是否有问题。

10
异步功能+等待+ setTimeout的组合
我正在尝试使用新的异步功能,希望解决我的问题以后能对其他人有所帮助。这是我的代码正在工作: async function asyncGenerator() { // other code while (goOn) { // other code var fileList = await listFiles(nextPageToken); var parents = await requestParents(fileList); // other code } // other code } function listFiles(token) { return gapi.client.drive.files.list({ 'maxResults': sizeResults, 'pageToken': token, 'q': query }); } 问题是我的while循环运行得太快,脚本每秒向Google API发送太多请求。因此,我想构建一个睡眠函数以延迟请求。因此,我也可以使用此功能来延迟其他请求。如果还有其他方法可以延迟请求,请告诉我。 无论如何,这是我的新代码不起作用。请求的响应在setTimeout中返回给匿名异步函数,但是我只是不知道如何将响应返回给睡眠函数resp。到初始asyncGenerator函数。 async function …

7
如何拒绝异步/等待语法?
如何拒绝异步/等待功能返回的承诺? 例如本来 foo(id: string): Promise<A> { return new Promise((resolve, reject) => { someAsyncPromise().then((value)=>resolve(200)).catch((err)=>reject(400)) }); } 转换为异步/等待 async foo(id: string): Promise<A> { try{ await someAsyncPromise(); return 200; } catch(error) {//here goes if someAsyncPromise() rejected} return 400; //this will result in a resolved promise. }); } 那么,在这种情况下,我如何才能正确拒绝这一承诺?

6
如何在顶层使用异步/等待?
我一直在浏览async/ await在浏览了几篇文章之后,我决定自己测试一下。但是,我似乎无法绕开为什么这行不通的想法: 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): >外部:[对象承诺] >内部:嘿 为什么函数内部的日志消息随后执行?我认为创建async/ 的原因await是为了使用异步任务执行同步执行。 有没有办法可以使用函数内部返回的值而不使用.then()after main()?

5
对Array.map使用异步等待
给出以下代码: var arr = [1,2,3,4,5]; var results: number[] = await arr.map(async (item): Promise<number> => { await callAsynchronousOperation(item); return item + 1; }); 产生以下错误: TS2322:类型'Promise <number> []'无法分配给类型'number []'。类型“ Promise <数字>”不可分配给类型“数字”。 我该如何解决?怎样才能让async await和Array.map一起工作?

7
使用异步/等待尝试/捕获块
我正在研究节点7异步/等待功能,并不断跨这样的代码绊脚 function getQuote() { let quote = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in …

4
如何“等待”回调返回?
在使用简单的回调(例如以下示例)时: test() { api.on( 'someEvent', function( response ) { return response; }); } 如何更改功能以使用异步/等待?具体来说,假设“ someEvent”被保证只能被调用一次,我希望函数测试是一个异步函数,该异步函数在执行回调之前不会返回,例如: async test() { return await api.on( 'someEvent' ); }

3
如何在流中使用ES8异步/等待?
在https://stackoverflow.com/a/18658613/779159中,示例了如何使用内置的加密库和流来计算文件的md5。 var fs = require('fs'); var crypto = require('crypto'); // the file you want to get the hash var fd = fs.createReadStream('/some/file/name.txt'); var hash = crypto.createHash('sha1'); hash.setEncoding('hex'); fd.on('end', function() { hash.end(); console.log(hash.read()); // the desired sha1sum }); // read all file and pipe it (write it) to the hash object …

4
使用Async / Await正确尝试…捕获语法
我喜欢Async/AwaitTypescript等中提供的新功能的平坦性。但是,我不确定我是否必须await在try...catch块的外部声明要输入的变量以便以后使用,这一点我不确定。像这样: let createdUser try { createdUser = await this.User.create(userInfo) } catch (error) { console.error(error) } console.log(createdUser) // business // logic // goes // here 如果我错了,请纠正我,但是似乎最好的做法是不要在try主体中放置多行业务逻辑,所以我只剩下createdUser在块外声明,在块中分配,以及然后使用它。 在这种情况下,最佳做法是什么?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.