Javascript 在遍历承诺数组时,文本不是函数错误 功能haePosti(i){ 让postilup=fetch('http://localhost:8080/postit/"(i),; 返回后置; } 异步函数tekstiPosti(){ var luku=等待muokkaaLuku(); var-lupaukset=[]; var lupaukset2=[] var postit=[]; var i=0; 对于(i=1;i{ 对于(i=0;i

Javascript 在遍历承诺数组时,文本不是函数错误 功能haePosti(i){ 让postilup=fetch('http://localhost:8080/postit/"(i),; 返回后置; } 异步函数tekstiPosti(){ var luku=等待muokkaaLuku(); var-lupaukset=[]; var lupaukset2=[] var postit=[]; var i=0; 对于(i=1;i{ 对于(i=0;i,javascript,Javascript,我已经编写了一个节点API,从中我尝试获取()数据并对其进行修改。一切进展顺利,直到我不得不开始改变返回值。在控制台中,它显示它将所有承诺都正常地推送到数组,甚至在promise.all()命令之后解析它们,但当我尝试开始更改值时,它会抱怨以下问题 我对网络编程相对较新,对node和js的了解只有几个星期。有什么明显的地方我遗漏了吗?您试图在承诺上使用文本,而不是承诺的履行价值。您需要使用Promise.all提供的数组作为其实现值,而不是lupaukset 但还有一些其他问题: 您没有检查

我已经编写了一个节点API,从中我尝试获取()数据并对其进行修改。一切进展顺利,直到我不得不开始改变返回值。在控制台中,它显示它将所有承诺都正常地推送到数组,甚至在promise.all()命令之后解析它们,但当我尝试开始更改值时,它会抱怨以下问题


我对网络编程相对较新,对node和js的了解只有几个星期。有什么明显的地方我遗漏了吗?

您试图在承诺上使用
文本,而不是承诺的履行价值。您需要使用
Promise.all
提供的数组作为其实现值,而不是
lupaukset

但还有一些其他问题:

  • 您没有检查
    fetch
    调用的HTTP成功(
    fetch
    API footgun)
  • 您在
    posit
    数组中包含任何内容之前返回它,因为它是由
    Promise的实现处理程序填充的
见评论:

function haePosti(i) {
    let postilup = fetch('http://localhost:8080/postit/' + i);
    return postilup;
}
async function tekstiPosti() {
    var luku = await muokkaaLuku();
    var lupaukset = [];
    var lupaukset2 = []
    var postit = [];
    var i = 0;
    for (i = 1; i < luku; i++) {
        lupaukset.push(haePosti(i));
    }

    Promise.all(lupaukset).then(()=>{
        for (i = 0; i < luku; i++) {
            console.log(lupaukset[i]);
            lupaukset[i] = lupaukset[i].text().then(function(text) {
                postit[i] = text.replace(/[^A-Za-z]+/g, '');
                console.log(postit[i]);
            });
        }
    }
    );
    return postit;

}

异步函数haePosti(i){ const response=等待获取('http://localhost:8080/postit/"(i),; //处理“取回”步兵枪 如果(!response.ok){ 抛出新错误(“HTTP错误”+response.status); } //请求正文的文本 返回response.text(); } 异步函数tekstiPosti(){ const luku=等待muokkaaLuku(); var-lupaukset=[]; for(设i=0;itext.replace(/[^A-Za-z]+//g'); }
您试图在承诺上使用
文本,而不是承诺的履行值。您需要使用
承诺提供的数组。所有
都作为其履行值,而不是
lupaukset

但还有一些其他问题:

  • 您没有检查
    fetch
    调用的HTTP成功(
    fetch
    API footgun)
  • 您在
    posit
    数组中包含任何内容之前返回它,因为它是由
    Promise的实现处理程序填充的
见评论:

function haePosti(i) {
    let postilup = fetch('http://localhost:8080/postit/' + i);
    return postilup;
}
async function tekstiPosti() {
    var luku = await muokkaaLuku();
    var lupaukset = [];
    var lupaukset2 = []
    var postit = [];
    var i = 0;
    for (i = 1; i < luku; i++) {
        lupaukset.push(haePosti(i));
    }

    Promise.all(lupaukset).then(()=>{
        for (i = 0; i < luku; i++) {
            console.log(lupaukset[i]);
            lupaukset[i] = lupaukset[i].text().then(function(text) {
                postit[i] = text.replace(/[^A-Za-z]+/g, '');
                console.log(postit[i]);
            });
        }
    }
    );
    return postit;

}

异步函数haePosti(i){ const response=等待获取('http://localhost:8080/postit/"(i),; //处理“取回”步兵枪 如果(!response.ok){ 抛出新错误(“HTTP错误”+response.status); } //请求正文的文本 返回response.text(); } 异步函数tekstiPosti(){ const luku=等待muokkaaLuku(); var-lupaukset=[]; for(设i=0;itext.replace(/[^A-Za-z]+//g'); }
您不需要等待Promise.all或使用它提供的解析值数组。您不需要等待Promise.all或使用它提供的解析值数组。