Javascript 是否可以通过使用promise.resolve返回结果,在promise中使用map/filter/reduce?

Javascript 是否可以通过使用promise.resolve返回结果,在promise中使用map/filter/reduce?,javascript,node.js,promise,Javascript,Node.js,Promise,我目前在承诺中做的循环如下: asyncFunc() .then(() => { return new Promise((resolve) => { for (let i = 0; i < length; i++) { // do something if (j == length - 1) { return resolve(result); }

我目前在承诺中做的循环如下:

asyncFunc()
.then(() => {
   return new Promise((resolve) => {
        for (let i = 0;  i < length; i++) {
        // do something
            if (j == length - 1) {
                return resolve(result);
            }
        }
    })
.then((result) => {
    console.log("This shows after the loop above is done");
    console.log(result);
});
这是否可行?或者我应该坚持使用for循环吗


我最近读了一些关于混合同步代码和异步代码的文章,但还没有找到一个解决方案来解决如何将它们与承诺混合在一起。

是的,这是非常合理的代码。你甚至可以这样写:

return new Promise((resolve) => {
    resolve(some_list.filter((item) => {
        return item.count > 2;
    }));
});

你在一个系统中发布同步代码,然后。。。实际上根本不需要这样做,因为从
返回的值始终保证是一个承诺

或者,换言之,
中返回的值,那么
已经被制作成承诺,因此为同步代码生成的值创建承诺是多余的

因此:您的代码编写得更正确

asyncFunc()
.then(() => some_list.filter(item => item.count > 2))
}).then((result) => {
    console.log("This shows after the loop above is done");
    console.log(result);
});

是的,这是可能的。您也可以检查这两种情况下的输出。或者在
中不提示同步操作。然后
首先(如果您想正确执行操作,那就是)哦,好的!所以,如果我使用map/filter/reduce,我就可以这样做,但是如果我使用for循环,我需要使用Promise.resolve,对吗?但是如果
中的内容是多行的,那该怎么办呢?例如,可能有两个对filter或其他内容的调用。假设您所展示的
过滤器
示例是最后一行,我仍然可以保证最后一行将返回到下一个
然后
asyncFunc()
.then(() => some_list.filter(item => item.count > 2))
}).then((result) => {
    console.log("This shows after the loop above is done");
    console.log(result);
});