Javascript 承诺的问题

Javascript 承诺的问题,javascript,promise,Javascript,Promise,我必须回到这个论坛寻求帮助,因为我仍然无法做出“承诺。所有”的工作 首先,我有一个函数,它应该返回一个承诺: const myFetch = (a, b) => { var url; // some stuff bulding 'url' using a and b fetch(url).then(response => { return response.json(); } }) 其思想是,上述函数返回一个promise,一旦解析,

我必须回到这个论坛寻求帮助,因为我仍然无法做出“承诺。所有”的工作

首先,我有一个函数,它应该返回一个承诺:

const myFetch = (a, b) => {
    var url;
    // some stuff bulding 'url' using a and b
    fetch(url).then(response => {
        return response.json();
    }
})
其思想是,上述函数返回一个promise,一旦解析,其值就是json对象。我已经检查了json是否确实有效。如果我用下面的行替换“return…”行,我实际上会得到一个有效的json:

response.json().then(res=> console.log(res))
其次,我有一个for循环,之后我希望有一系列承诺:

promises = [];
for (...){
    // some other stuff
    promises.push(myFetch(a, b))
}
最终我执行以下代码:

Promise.all(promises)
.then(responses => { // <=== Here I get all "undefined"
    responses.forEach(response => {
        console.log(response);// <=== Here I get all "undefined"
    });
    // some other stuff that I can do only after all fetches are complete
})
Promise.all(承诺)
。然后(响应=>{//{

console.log(response);//您需要从fetch调用返回承诺,否则承诺链将被破坏,一旦您这样做,一切都应该很好

类似的方法应该奏效:

const myFetch = (a, b) => {
    var url;
    // some stuff bulding 'url' using a and b
    return fetch(url).then(response => {
        return response.json();
    })
};
一个代码片段示例:

constmyfetch=(url,a,b)=>{
返回获取(url)。然后(响应=>{
返回response.json();
})
};
函数testMyFetch(){
承诺=[];
for(设i=0;i<5;i++){
promises.push(myFetch(“https://jsonplaceholder.typicode.com/users/“+(i+1));
}
然后(result=>console.log(“Promise.all result:”,result));
}

testMyFetch();
您的
myFetch()
没有返回任何内容,您需要执行类似
return fetch(url)的操作。然后(…);
在内部有一个返回。然后,您确定您的所有请求都给出了正确的响应,就好像有一个请求没有满足您的承诺一样。全部fails@Bob-如果返回不返回到您的
myFetch()
通过调用,它返回到
中提供的回调。然后()
您可能是对的。现在我尝试使用两个“return”,正如Terry Lennox的回答中所暗示的那样,它似乎在Anks@Terry Lennox中起作用,它起作用了。我曾尝试在取回或回复行中返回,但不是在两个行中都返回!是的,我以前做过很多次,很长一段时间都在挠头:-D,我想我们从错误中吸取教训。