【发布时间】:2017-08-15 07:11:26
【问题描述】:
任何胶水。 请不要给出 SETTIMEOUT 的例子。
我的主管说,如果 then() 没有返回任何新的承诺,则没有必要有更多 then() 语句。我无法完全理解,我看过 Exploring ES6 但没有很好的例子我的情况。
let readData = new Promise(function (resolve, reject) {
fs.readFile('/home/geek/Desktop/activity-logs.csv', 'utf8', (err, data) => {
if (err)
reject();
resolve(data);
});
});
readData
.then((data) => {
bankLogs = splitString(data, ';')
})
.then(() => {
for (let index = 2; index < bankLogs.length; index += 5) {
objectOfUsers[bankLogs[index]] = {}
temporarySymbols.push(bankLogs[index].concat(bankLogs[index + 1]));
}
Object.keys(objectOfUsers).forEach(function (element) {
objectKeys.push(element)
});
for (let index = 0; index < objectKeys.length; index++)
createObject(index);
console.log(objectOfUsers)
})
.catch((err) => console.log('Error happened : ' + err));
【问题讨论】:
-
那么你的问题是什么?您的代码的哪一部分有问题?看来您已经使用了 Promise,而且它是异步的。
-
第一个是
.then((data) => { return splitString(data, ';') }) .then((bankLogs) => {。在那之后,你的代码让我很困惑。请解释你想做什么(包括为什么你只取每 5 个索引,例如)还包括一些样本数据和你正在使用的函数 -
还有一件事。拥有更多不是不必要的。下一个
then工作,即使上一个then没有回报。 -
我多次使用 then() 语句,但他说没有必要,如果 then() 语句返回一个新的承诺。我无法得到它。此外,他说您应该在 then() 语句中使用局部变量而不是全局变量
-
试试这个代码
Promise.resolve().then(function() { console.log('promise1'); }).then(function() { console.log('promise2'); });你就会明白了。也许你的主管错了。
标签: javascript node.js ecmascript-6 es6-promise