Javascript:在承诺完成之前返回激发

Javascript:在承诺完成之前返回激发,javascript,asynchronous,promise,Javascript,Asynchronous,Promise,我有一个AJAX调用,它调用了这个方法,但是现在,它将不返回任何结果 console.log(标题)显示正确的预期值。但是,此方法结束时不会返回此值 由于process使用异步函数调用,因此无法从方法返回值 这类问题的解决方案是使用回调函数,如下所示 function process(hugedirectory) { var title = hugedirectory.getTitleEachFile().then(function(caption){

我有一个AJAX调用,它调用了这个方法,但是现在,它将不返回任何结果


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()
(一次或两次)也会有同样的效果。