Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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
Node.js 无法返回链接的承诺结果_Node.js_Q_Request Promise - Fatal编程技术网

Node.js 无法返回链接的承诺结果

Node.js 无法返回链接的承诺结果,node.js,q,request-promise,Node.js,Q,Request Promise,需要这个模块,并以这种方式使用它的数据和子数据是我后来定义的选项 问题是请求(数据)结果不是返回的,但请求(子数据)结果是返回的 使用q模块创建一系列承诺,但我仍然无法获得预期的回报结果 我建议使用以下方法代替承诺链或Q: Q.allSettled([ foo(), fo(), f(), . . . ]) 您可以使用以下任何方法链接承诺,并将两个响应返回到一个数组中 const fetchData = (data, subData) => { co

需要这个模块,并以这种方式使用它的数据和子数据是我后来定义的选项

问题是请求(数据)结果不是返回的,但请求(子数据)结果是返回的

使用q模块创建一系列承诺,但我仍然无法获得预期的回报结果


我建议使用以下方法代替承诺链或Q:

Q.allSettled([
  foo(),
  fo(),
  f(),
  .
  .
  .
])

您可以使用以下任何方法链接承诺,并将两个响应返回到一个数组中

const fetchData = (data, subData) => {    
    const result = await request(data);
    const resultSub = await request(subData);

    console.log(result, resultSub);
};

因为您没有从
foo
返回
request(data)
的响应,所以只需删除
foo
方法并使用
Q.allSettled([request(data),request(subData)])
@AZ我需要在请求(data)之后调用request(subData)已完成。然后添加另一个
。然后
阻塞并返回两个响应的数组。您能否向我展示我对promise概念的新语法,以及nodejs@AZ_在回答中添加的代码片段。
Q.allSettled([
  foo(),
  fo(),
  f(),
  .
  .
  .
])
const fetchData = (data, subData) => {    
    const result = await request(data);
    const resultSub = await request(subData);

    console.log(result, resultSub);
};
const foo = (data, subData) => {
    let result;
    return request(data)
        .then(res => {
            result = res;
            return request(subData)
        }).then(res => {
            return [result, res]
        });
}

//OR
const foo2 = (data, subData) => {
    return request(data)
        .then(res1 => {
            return request(subData).then(res2 => {
                return [res1, res2]
            })
        });
}

//OR
const foo3 = async (data, subData) => {
    let res1  = await request(data);
    let res2 = await request(subData);
    return [res1, re2];
}