获取延迟承诺值 jQuery

get deferred promise value jQuery

我有以下功能

function commentCount(id) {
    var deferred = new $.Deferred()
    var url =
      _spPageContextInfo.siteAbsoluteUrl +
      "/_api/lists/getByTitle('Comments')/items?$select=Id&$filter=ItemID eq " +
      id +
      " and Title eq 'Colleague'"
    getData(url).then(function(data) {
      deferred.resolve(data.d.results.length)
    })
    return deferred.promise()
  }

现在我想 return HTML 字符串中的那个值,如下所示,但它显示 [object object]

'<div class="card-footer"> <div class="row "><div class="col-lg mobile-center"><a href="#">' + commentCount(item.Id)

我怎样才能获得这样的价值

您的函数正在返回一个承诺,您必须先解决该承诺才能获取数据

它还使用了一个不必要的 $.Deferred 因为 getData() returns 一个承诺

需要像这样:

function commentCount(id) {

  var url ='....';

   // return the getData promise 
  return getData(url).then(function(data) {
    // return the count to next `then()` in chain
    return data.d.results.length
  })

}

commentCount(someId).then(function(count){
   // do stuff with your html here
    var str ='<div> Count:' + count + '</div>';
})