получить отложенное значение обещания jQuery - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть функция ниже

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()
  }

Теперь я хочу вернуть это значение в HTML-строку, как показано ниже, но она показывает [объект объекта]

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

Как я могу получить значение какчто

1 Ответ

0 голосов
/ 24 ноября 2018

Ваша функция возвращает обещание, и вы должны разрешить это обещание, прежде чем сможете получить данные

Также используется ненужное $.Deferred, поскольку getData() возвращает обещание

Должно быть что-то вроде:

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>';
})
...