JavaScript中的递归方法调用
我在执行httpRequest时创建了一个包装器,向对象返回一个承诺,它可以用于如下调用: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.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);
})