鍍金池/ 問(wèn)答/HTML/ KOA2 await無(wú)效,并沒(méi)有等待

KOA2 await無(wú)效,并沒(méi)有等待

router.get('/spider', async (ctx, next) => {
var titles = [ ]
await request({

url:"http://caipiao.163.com/award/cqssc/",
gzip: true,
method:"GET"

},function(e,r,b){

  // console.log(b)
if(!e){
  var $ = cheerio.load(b);
  $('.award-winNum').each(function (idx, element) {
    var $element = $(element);
    // console.log($element.text())
    titles.push({
      title: $element.text()
    })
  })
  console.log(titles)
}

})
ctx.body = titles;
})

await并沒(méi)有等待。請(qǐng)問(wèn)如何解決?

后來(lái)自己百度解決:
router.get('/spider', async (ctx, next) => {
var that = ctx;

let postData = await spider(ctx)
ctx.body = postData;

})

function spider()
{
return new Promise((resovle, reject) => {

try{
  var titles = [  ]
  request({
    url:"http://caipiao.163.com/award/cqssc/",
    gzip: true,
    method:"GET"
  },function(e,r,b){
      // console.log(b)
    if(!e){
      var $ = cheerio.load(b);
      $('.award-winNum').each(function (idx, element) {
        var $element = $(element);
        // console.log($element.text())
        titles.push({
          title: $element.text()
        })
      })
      resovle(titles);   
    }
  })
} catch (err) {
  reject(err);
}

});

回答
編輯回答
雨萌萌
  1. await 后面必須是promise,尼的request第一個(gè)版本還是callback
  2. 第2個(gè)也是錯(cuò)的
function spider() {
    return new Promise((resolve,reject)=>{
        request(xxx,(e,r)=>{
            e?reject(e):resolve(r);
        });
    });
}

使用

try{
    await spider();
}catch(e){
    console.log(e);
}
2017年11月21日 09:15