gpt4 book ai didi

jquery - .then .done promise 不会使用 knockout 和 js 在 durandal spa 中工作

转载 作者:行者123 更新时间:2023-12-01 07:10:35 24 4
gpt4 key购买 nike

我正在使用 Knockout jQuery 和 Require 在 Durandal 中开发 SPA。我的问题是,当我对 API 进行 ajax 调用时,我实际上并没有在 .then 语句之外获取数据(当我用下面注释掉的行替换我的 Get 方法时)。但是,如果我使用当前调用,则无法使用 .then 它会给我一个类型未定义的错误。我看过 Durandal,他们解释了如何使用 Q,我有它并在我的 main 中引用。不确定提到的补丁here

    var getSearchResult = function (dataHolder,text) {
//return $.getJSON('/Api/Data/GetSearchItem/' + text).done();
jQuery.support.cors = true;
$.ajax({
url: '/Api/Data/GetItem/' + text,
type: 'GET',
dataType: 'json',
success: function (data) {
dataHolder(data);
var check = dataHolder();
return dataHolder();
},
error: function (e) {
}
});
};

我这样调用该方法:

        var search = function (searchText) {
dtx.getSearchResult(searchResult, searchText).then(function () {//(searchResult is an observableArray
searchFlag(true);
var test = searchResult();//i get data here
searchTxt(searchText);
});
var test1 = searchResult();//no data here
};

最佳答案

如果让 getSearchResult 返回一个 Promise 会怎样?

var getSearchResult = function (dataHolder,text) {
//return $.getJSON('/Api/Data/GetSearchItem/' + text).done();
jQuery.support.cors = true;
return $.ajax({
url: '/Api/Data/GetItem/' + text,
type: 'GET',
dataType: 'json'
}).then(function(data) {
dataHolder(data);
var check = dataHolder();
return dataHolder();
});
};

然后还让 search 返回一些 promise :

    var search = function (searchText) {
return dtx.getSearchResult(searchResult, searchText).then(function (data) {//(searchResult is an observableArray
searchFlag(true);
var test = searchResult();//i get data here
searchTxt(searchText);
});
};

现在您可以按如下方式调用search:

search(searchText).then(function(data) {

});

关于jquery - .then .done promise 不会使用 knockout 和 js 在 durandal spa 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28426258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com