解释为什么这种决心不会兑现承诺? JS

时间:2020-04-15 21:27:43

标签: javascript promise resolve

我似乎无法弄清楚为什么它不起作用,第一个示例可以很好地工作。对第二个示例重复相同的解析方法不起作用?我已经尝试了文档中的所有内容,但不知道为什么,它总是返回一个空的{},是的,它在本地函数中完全可以正常运行console.logs。

示例1 这很好用,结果返回控制台中的url链接



 function searchStockx(searchText){ 
    return new Promise((resolve, reject) => {
        request({
        method: "POST",
        url: "https://xw7sbct9v6-dsn.algolia.net/1/indexes/products/query",
        headers: stockxheaders,
        qs: stockxalgolia,
        json: {"params":"query=" + searchText + "&facets=*&filters="}
      },
        function(err, res, body){

        let stockXurl = body.hits[0].url
        resolve(stockXurl)

    })
})
}                 
   app.post('/', (async(req, res) => {
   searchText = (req.body.input)
   result = await searchStockx(searchText)

   res.send(result



}))

示例2 与上面相同的解析,只是变量不同,在终端中返回空{}(未定义)



function getGoatSize(slug){
        return new Promise((resolve, reject) => { 
        request({
            method: "GET",
            url: "https://www.goat.com/api/v1/product_templates/" + slug + "/show_v2",
            headers: goatGETHeaders
          },
          function(err, res, body){

            let json = JSON.parse(body)
            let goatSizes = json.availableSizesNewV2
            let goatPic = json.pictureUrl




            resolve(goatPic)

            })
        })
 }


app.post('/', (async(req, res) => {
   searchText = (req.body.input)
    searchStockx(searchText)
    result = await getGoatSize(goatPic)
    res.send(result)



}))

0 个答案:

没有答案