我不知道如何使用promises设置变量值(例如ajax调用的响应)。
我有例如:
getVariable(id) {
return $.ajax({
//...
}).done(function(response) {
//... getVariable return response
}).fail(function(response) {
//... getVariable return something_else
});
// ...
,其中
--include="*/ --include="config.xml" --exclude="*"
一旦完成(),getVariable应该从promise更改为ajax(或任何其他异步)响应值。
答案 0 :(得分:1)
您无法按照您尝试的方式直接设置变量。由于您的操作是异步的,因此您可以可靠地使用异步操作结果的唯一位置是承诺处理程序,例如.done()
或.then()
。因此,将结果设置为某个变量然后期望在其他代码中使用该变量通常不会正常工作。这通常会导致计时问题。
相反,您必须学习使用异步结果进行编程,其中您实际使用了promise处理程序回调中的变量。你不会存储它,然后期望在其他代码中使用它。
function getVariable(id) {
return $.ajax({...});
});
getVariable(...).then(function(response) {
// process result here
// don't just store it somewhere and expect other code to use that stored
// value. Instead, you use the result here and put whatever code
// needs that value in here.
}, function(err) {
// handle error here
});