JavaScript中的递归方法调用

JavaScript中的递归方法调用,javascript,typescript,Javascript,Typescript,我在执行httpRequest时创建了一个包装器,向对象返回一个承诺,它可以用于如下调用: httpRequest.get("http://some.link/some?query=foo"); 或 而且,我需要实现并发调用,将承诺重新调谐到数组,如: httpRequest .get("http://some.link/some?query=foo") .post("http://some.link", {"some":"requestBody"}) .get("ht

我在执行httpRequest时创建了一个包装器,向对象返回一个承诺,它可以用于如下调用:

httpRequest.get("http://some.link/some?query=foo");

而且,我需要实现并发调用,将承诺重新调谐到数组,如:

httpRequest
    .get("http://some.link/some?query=foo")
    .post("http://some.link", {"some":"requestBody"})
    .get("http://another.concurrent/request");
我知道如何使用promise.all实现它,但它会给用户带来不好的体验

我需要找到一种方法来重复调用函数,就像我们承诺的那样

promise.then(res=>foo)
       .then(res=>bar)
       .then(res=>baz)

你所描述的不是递归

您说过希望并发HTTP请求由一个
Promise
表示(即
Promise
在所有3个请求完成后以任意顺序解析)

您可以使用
Promise.all
(使用TypeScript语法):

let-req1:Promise=httpRequest.get(“http://?query=foo”);
让req2:Promise=httpRequest.post(“http://?query=foo”);
让req3:Promise=httpRequest.get(“http://?query=foo”);
let reqAll:Promise=返回承诺.all(req1、req2、req3);
let responses:Response[]=等待重新调用;

调用所有这些函数,将结果收集到一个数组中。然后用它来处理它们的成败

有关Promise.all的示例,请参见:

Promise.all([
    asyncThing(),
    asyncThing(),
    asyncThing()
])
.then((promises) => {
    console.log("all resolved: ", promises)
})
.catch((err) => {
    console.error("first rejection:", err);
})

这不是递归。“但它给用户带来了糟糕的体验。”-你在说什么?你说的“像我们承诺的那样重复调用函数”是什么意思?
let req1: Promise<Response> = httpRequest.get( "http://?query=foo" );
let req2: Promise<Response> = httpRequest.post( "http://?query=foo" );
let req3: Promise<Response> = httpRequest.get( "http://?query=foo" );

let reqAll: Promise<Response[]> = return Promise.all( req1, req2, req3 );

let responses: Response[] = await reqAll;
Promise.all([
    asyncThing(),
    asyncThing(),
    asyncThing()
])
.then((promises) => {
    console.log("all resolved: ", promises)
})
.catch((err) => {
    console.error("first rejection:", err);
})