Javascript:在承诺完成之前返回激发
我有一个AJAX调用,它调用了这个方法,但是现在,它将不返回任何结果Javascript:在承诺完成之前返回激发,javascript,asynchronous,promise,Javascript,Asynchronous,Promise,我有一个AJAX调用,它调用了这个方法,但是现在,它将不返回任何结果 console.log(标题)显示正确的预期值。但是,此方法结束时不会返回此值 由于process使用异步函数调用,因此无法从方法返回值 这类问题的解决方案是使用回调函数,如下所示 function process(hugedirectory) { var title = hugedirectory.getTitleEachFile().then(function(caption){
console.log(标题)
显示正确的预期值。但是,此方法结束时不会返回此值 由于process
使用异步函数调用,因此无法从方法返回值
这类问题的解决方案是使用回调函数,如下所示
function process(hugedirectory) {
var title = hugedirectory.getTitleEachFile().then(function(caption){
console.log(caption);
return caption;
});
return title;
}
在这种情况下,我们将回调函数传递给
process
,而不是从process
返回标题,在异步调用完成时调用该函数,并将结果title
值传递给回调函数。因为process
使用异步函数调用,无法从方法返回值
这类问题的解决方案是使用回调函数,如下所示
function process(hugedirectory) {
var title = hugedirectory.getTitleEachFile().then(function(caption){
console.log(caption);
return caption;
});
return title;
}
在这种情况下,我们将回调函数传递给
process
,而不是从process
返回标题。异步调用完成后,调用该函数,并将结果title
值传递给回调函数。可能重复:这不是使用jquery。异步函数就是这样工作的。异步调用产生的所有数据处理都必须使用回调函数执行。您可以演示一个例子吗?我不知道这是什么意思。您对返回的值做了什么可能的重复:这不是使用jquery。异步函数就是这样工作的。异步调用产生的所有数据处理都必须使用回调函数执行。您可以演示一个例子吗?我不知道它的意思是什么“由于进程使用异步函数调用,所以不能从方法返回值”,您对返回值做了什么。这句话不正确。对延期/承诺的基本理解应该引导您重新考虑。Arun,虽然您的解决方案完全可以,但从函数返回承诺也是一种可行的方法。例如,函数可以像函数进程(hugedirectory){return hugedirectory.getTitleEachFile();}
一样简单,并且与标题
相关的所有内容都可以在标准的阻塞代码进程(hugedirectory)中指定。然后(函数(标题){console.log(标题);})。然后(函数(标题){/*用title*/}做点什么;
。我一直坚持使用。然后()
在这里,尽管。完成()
(一次或两次)也会有同样的效果。“由于进程使用异步函数调用,所以无法从方法返回值”。此语句不正确。对延迟/承诺的基本理解应该会引导您重新考虑。Arun,虽然您的解决方案完全可以,但从函数返回承诺也是一种可行的方法。例如,函数可以像函数进程(hugedirectory){return hugedirectory.getTitleEachFile();}一样简单
和与标题相关的所有内容都可以在标准的阻塞代码中指定,进程(hugedirectory)。然后(函数(title){console.log(title);})。然后(函数(title){/*用title*/}做点什么;
。我一直坚持使用。然后()
这里虽然.done()
(一次或两次)也会有同样的效果。