无法从then()中获取数据节点JS

时间:2019-01-01 11:40:53

标签: node.js

这是我简单的应用程序

for(var i = 0 ; i < prod.length;i++ ){
var urls = prod[i].URL
urls = urls.split(" ")[0];
scrapeIt(urls, {

   avatar: {
        selector: ".image img"
      , attr: "src"
    }
}).then(async ({ data, response })  =>  {
   // console.log(`Status Code: ${response.statusCode}`)
 urli = "https://www.choithrams.com"+data.avatar

 var name = prod[i].Name
 var price = prod[i].price

 console.log(name)
})
}

我想逐步获取结果,但它没有正确迭代。 其次,例如,我在外部有一个全局变量,我想用我得到的变量覆盖它的值,我不能简单地做到这一点。

结果是

Mara Chopped Tomatoes Easy Open 400 gms
Mara Chopped Tomatoes Easy Open 400 gms
Mara Chopped Tomatoes Easy Open 400 gms
Mara Chopped Tomatoes Easy Open 400 gms
Mara Chopped Tomatoes Easy Open 400 gms
Mara Chopped Tomatoes Easy Open 400 gms

这是mineJSON中的最后一项。 我是所有这方面的初学者,请提供帮助。

1 个答案:

答案 0 :(得分:0)

在这种情况下,最好使用Promise.all

Promise.all(prod.map(({ URL, Name, price }) => {
   const URL = URL.split(" ")[0];
   return scrapeIt(urls, {
      avatar: {
        selector: ".image img"
      , attr: "src"
      }
   }).then(async ({ data, response })  =>  {
     // console.log(`Status Code: ${response.statusCode}`)
     const urli = "https://www.choithrams.com" + data.avatar
     return {
       urli, Name, price
     }
   })
})).then(results => {
   // Results is an array of:
   // { urli: "...", Name: "...", price: ... }
   ...
})