我有一个类似于数组的数组,它暴露了异步方法.async方法调用返回数组结构,进而显示更多异步方法.我正在创建另一个JSON对象来存储从此结构获取的值,因此我需要小心跟踪回调中的引用.
我编写了一个强力解决方案,但我想学习一个更惯用或更干净的解决方案.
这是一些部分代码 -
var jsonItems = [];
items.forEach(function(item){
var jsonItem = {};
jsonItem.name = item.name;
item.getThings().then(function(things){
// or Promise.all(allItemGetThingCalls, function(things){
things.forEach(function(thing, index){
jsonItems[index].thingName = thing.name;
if(thing.type === 'file'){
thing.getFile().then(function(file){ //or promise.all?
jsonItems[index].filesize = file.getSize();
Run Code Online (Sandbox Code Playgroud) 我想在一些文件系统操作中使用async/await.通常async/await工作正常,因为我使用babel-plugin-syntax-async-functions.
但是使用这段代码,我遇到了names未定义的if情况:
import fs from 'fs';
async function myF() {
let names;
try {
names = await fs.readdir('path/to/dir');
} catch (e) {
console.log('e', e);
}
if (names === undefined) {
console.log('undefined');
} else {
console.log('First Name', names[0]);
}
}
myF();
Run Code Online (Sandbox Code Playgroud)
当我将代码重建到回调地狱版本时,一切正常,我得到了文件名.谢谢你的提示.