gpt4 book ai didi

javascript - 如何等待 'for'循环返回

转载 作者:行者123 更新时间:2023-12-02 15:32:58 25 4
gpt4 key购买 nike

我知道这是一个简单、愚蠢的问题,但我已经坚持了两天了。

考虑有一个函数,管理从某些对象类型 UnsafeCourse 创建对象类型 Course,如下所示:

Class Schedule {
constructor() {
this.courses = [];
}

sectionNeedsCourse(unsafeCourse) {
this.courses.forEach(function (course, index, array) {
if (course.couldBeRepresentedBy(unsafeCourse)) {
return course;
}
}

return new Course(unsafeCourse, [some additional parameters...]);
}
}

由于 node.js 中的内容是异步工作的,因此 for 循环已经完成。

我尝试了不同的 Promise 方法,但没有成功。

sectionNeedsCourse(unsafeCourse) {  //->  Promise
return new Promise (function (resolve) {
new Promise(function (resolve) {
this.courses.forEach(function (course, index, array) {
if (course.couldBeRepresentedBy(unsafeCourse)) {
resolve(eachCourse);
}
});

resolve(null);
}).then(function (result) {
console.log(result);
if (result != null) {
addCourse(unsafeCourse).then(function (result) {
resolve(result);
});
} else {
resolve(result);
}
});
});
}

此外,在同一函数中使用多个 Promise 是一个好习惯吗?

这会带来沉重的开销吗?

最佳答案

我在第一个示例中看不到任何异步方法。 Array.forEach 不是异步函数。您只需在 forEach 回调中返回类(class),但必须直接在 sectionNeedsCourse 中返回它:

sectionNeedsCourse(unsafeCourse) {
var course = this.courses.find(function(course){
course.couldBeRepresentedBy(unsafeCourse) ? course : false;
});
return course ? course : new Course(unsafeCourse, []);
}

如您所见,我还使用 find 而不是 forEach,因为这是您此处需要的逻辑。

根据此处的要求,相同的示例稍微短一些,带有 Arrow function :

sectionNeedsCourse(unsafeCourse) {
var course = this.courses.find(course => {
course.couldBeRepresentedBy(unsafeCourse) ? course : false;
});
return course ? course : new Course(unsafeCourse, []);
}

关于javascript - 如何等待 'for'循环返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33155902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com