Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript inceasyncversionasync。如果省略回调,eachOf将返回一个promise 返回:_Javascript_Node.js_Asynchronous_Promise_Async.js - Fatal编程技术网

Javascript inceasyncversionasync。如果省略回调,eachOf将返回一个promise 返回:

Javascript inceasyncversionasync。如果省略回调,eachOf将返回一个promise 返回:,javascript,node.js,asynchronous,promise,async.js,Javascript,Node.js,Asynchronous,Promise,Async.js,如果省略回调,则为承诺 如果需要在菊花链中调用该函数,可以这样使用: const async=require('async'); (职能f(){ 设项目=[]; for(设i=0;i{ 设置超时(()=>{ 决心(正确); }, 500); }) 。然后(res1=>{ log('这是res1:',res1); 返回async.eachOf(项,(项,索引,回调)=>{ log('这是项:',项); 设置超时(()=>{ newItems.push({ 名称:item.name+'Fixl',

如果省略回调,则为承诺

如果需要在
菊花链中调用该函数,可以这样使用:

const async=require('async');
(职能f(){
设项目=[];
for(设i=0;i<10;i++){
推({
名称:'名称'+i,
年龄:20岁以上
});
}
让newItems=[];
返回新承诺(解决=>{
设置超时(()=>{
决心(正确);
}, 500);
})
。然后(res1=>{
log('这是res1:',res1);
返回async.eachOf(项,(项,索引,回调)=>{
log('这是项:',项);
设置超时(()=>{
newItems.push({
名称:item.name+'Fixl',
年龄:item.age+索引+1
});
回调();
}, 500);

});//T.J.Crowder如果我在
module2.getSomeVals()中有一个自定义的catch处理程序,也可以
app.js?@T.J.Crowder我指的是自定义errorHandler,而不是catchHandler。我不想引起混淆。我更新了我的问题。谢谢!更新的代码将拒绝转换为履行,值
未定义。
。这通常是个坏主意。如果你返回承诺链(就像你在这种情况下一样),不要处理拒绝;让接收链的呼叫方处理错误。@t.J.Crowder非常感谢,但我不想浪费你的时间。你说的很清楚-我明白了。如果我拒绝一个错误,在该链中没有捕获,它将是未定义的。
throw
是它的方式,不是吗?好的。那么它很好。基本上,承诺的规则之一是:您必须要么处理错误,要么将承诺链返回到将要返回的内容在不返回链的情况下处理错误,这样就可以了。如果它返回链,您就不需要
catch
处理程序。那么,您是说使用
app2.js
module2.js
进行设置是一种好方法吗?
        (err) => {
            if (err)
                throw err;
            else {
              console.log('this is newResults:', newResults); //this is the new result as expected.
              return newResults; //this return doesn't exit the function as expected and the next log will be reached
            }
        });
async.eachOf(results,
    successHandlingCallback,
    errorHandlingCallback /* <- your callback is inside here */ );

console.log('this is newResults and shouldn\'t reached at all:', newResults); // <- outside, no way of knowing what happened inside the callbacks