gpt4 book ai didi

javascript - twitter typeahead.js process() 调用不异步工作

转载 作者:行者123 更新时间:2023-11-30 16:51:36 24 4
gpt4 key购买 nike

我正在使用独立的 UI View 。

http://twitter.github.io/typeahead.js/releases/latest/typeahead.jquery.min.js

我正在尝试异步查询地址并显示如下建议:

$('#inputBox').typeahead({
hint: true,
highlight: true,
minLength: 3
},
{
name: 'places',
source: evnt.addressSuggest
});

//////////////////////

addressSuggest: function(query, process){
$.ajax({
type: "GET",
url: "https://XXXXXX",
data: {
prefix: query,
},
dataType: 'json',
}).done(function(data){
var suggestions = data.suggestions;

var onlyText = $.map(suggestions, function(n, i){ return n.text; });


process(onlyText);
})
.error(function(){alert('an error occurred');});

},

上面没有显示任何建议。如果我在调用 process() 的位置上方或下方放置一个日志语句,它就会被执行。但是对进程的调用似乎没有做任何事情。

但是当我使 AJAX 调用同步并按如下方式调用 process() 时:

addressSuggest: function(query, process){
var onlyText;

$.ajax({
type: "GET",
url: "https://XXXXXX",
data: {
prefix: query,
},
dataType: 'json',
async: false
}).done(function(data){
var suggestions = data.suggestions;

onlyText = $.map(suggestions, function(n, i){ return n.text; });

})
.error(function(){alert('an error occurred');});

process(onlyText);
},

然后我就可以看到建议了。当然,同步请求的问题是 UI 被阻塞。为什么异步版本不起作用?

附言我还尝试将数据结构从字符串数组更改为类似 [{'value': 'first'}, {'value': 'second'}, {'value': 'third'}] 正如其他问题的一些其他答案所建议的那样,但这也不起作用。

最佳答案

我认为你需要使用函数的三个参数版本,例如function (query, process, asyncProcess),然后对数据使用第三个参数 asyncProcess 而不是第二个。

所以你会做 asyncProcess(data) 而不是 process(data)

关于javascript - twitter typeahead.js process() 调用不异步工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30446170/

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