在Angular中创建一个承诺
问题描述:
我想在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();
答
您的代码应该是doWorkAsync().then
。你错过了括号。它也应该是.catch()
而不是.fail()
。
谢谢,固定的功能,但暴露了另外两个问题。错误:doWorkAsync(...)。then(...)。fail不是函数,错误:数据未定义。问题被写入数据库,但我仍然没有收回返回问题/数据。我可能需要发布应该返回数据的回调,除非您对这些问题有其他想法。 –
编辑我的回答 – GBa
再次感谢,修复了.fail错误,但我仍然没有收回数据。我将用应该返回数据的函数创建另一个帖子。 –