2016-06-09 48 views
0

我想在Angular中创建一个承诺。异步函数flQuestionCrud.createNewQuestion(currentQuestionData)允许我在使用回调函数时在mongoDb集合中创建一个条目,但我无法获取创建问题数据并且需要_id。我现在正在尝试创建一个承诺,但错误消息是doWorkAsync.then不是一个函数。如果这是明确的,我会使用Q.nfcall,因为这似乎是一种创建承诺的简单方法,但是这种功能似乎并不存在于Angular中。关于如何创建承诺的任何建议?在Angular中创建一个承诺

function doWorkAsync() { 
     return $timeout(flQuestionCrud.createNewQuestion(currentQuestionData), 10); 
    } 

    doWorkAsync 
     .then(function(questiondata) { 
      console.log("flQuestionCrudCtrl - Success " + questiondata); 
      console.log("flQuestionCrudCtrl - Success Statement " + questiondata.statement); 
      console.log("flQuestionCrudCtrl - Success Question id " + questiondata._id); 
      currentQuestionData._id = questiondata._id; 
      flQuestionDataService.setNewQuestionId(questiondata._id); 
      console.log("flQuestionCrudCtrl - currentQuestionData._id " + currentQuestionData._id); 
      console.log("flQuestionCrudCtrl - flQuestionDataService.getNewQuestionId() " + flQuestionDataService.getNewQuestionId()); 
      $state.go('questionUpdate'); 
     }) 
     .fail(function(err) { 
      console.log("flQuestionCrudCtrl - Error " + err); 
      $state.go('questionCreate'); 
     }) 
     .done(); 

回答

1

您的代码应该是doWorkAsync().then。你错过了括号。它也应该是.catch()而不是.fail()

+0

谢谢,固定的功能,但暴露了另外两个问题。错误:doWorkAsync(...)。then(...)。fail不是函数,错误:数据未定义。问题被写入数据库,但我仍然没有收回返回问题/数据。我可能需要发布应该返回数据的回调,除非您对这些问题有其他想法。 –

+0

编辑我的回答 – GBa

+0

再次感谢,修复了.fail错误,但我仍然没有收回数据。我将用应该返回数据的函数创建另一个帖子。 –