Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 你如何在承诺内回报?_Javascript_Asynchronous_Promise - Fatal编程技术网

Javascript 你如何在承诺内回报?

Javascript 你如何在承诺内回报?,javascript,asynchronous,promise,Javascript,Asynchronous,Promise,我开始自学javascript,但从promise中的函数返回时遇到了困难。我的代码基本上如下所示: foobar = function(x,y){ //code that doesn't matter return promiseFunction( function(results){ console.log("promise completed") console.log(output) ret

我开始自学javascript,但从promise中的函数返回时遇到了困难。我的代码基本上如下所示:

foobar = function(x,y){
    //code that doesn't matter
    return promiseFunction(
        function(results){
           console.log("promise completed")
           console.log(output)
           return output;}
        function(err){throw error;});

console.log(foobar('1','2'));
这张照片

undefined
promise completed
what I want the result to be

我是异步编程新手,不确定自己做错了什么。

异步函数不会返回(或者至少不可靠)。当您从异步函数中获取值时,
console.log
已经用它所拥有的运行了(在本例中为nothing,或
undefined
)。这是我从一开始就刻苦学习的一课。如果希望在异步函数之后发生某些事情,则必须在异步函数内部调用它


有关更多信息和建议,请参阅该线程。

您不会在承诺中返回
。您在另一个任务完成后链接该任务-获得完成链接任务的新承诺:

function foobar(x,y){
    // Assuming that promiseFunction does return a promise
    return promiseFunction().then(function(results){
         console.log("promise completed")
         console.log(output)
         return output;
    }, function(err) {
         throw error;
    });
}
foobar('1','2').then(function(output) {
    console.log(output);
})

如果
promiseFunction
尚未返回承诺,请检查如何为一些示例和模式构造承诺。

因此,foobar('1','2')正在返回输出,但console.log正在打印“undefined”,foobar('1','2')才有机会返回?@user1231120-答对了!如果我叫foobar('1','2'),那么。。。我得到“TypeError:无法调用未定义的'then'方法”。这大概意味着foobar('1','2')不返回承诺?环顾四周,看起来像是在包装promiseFunction()。。。在$.ajax()中,应该解决这个问题。如何将jquery添加到一个javascript文件中?没有HTML文件。嗯,我发布的函数确实返回了一个承诺。
promiseFunction
是否返回
$.ajax
的结果?如果您还没有使用jQuery,那么最好使用其他库。在没有HTML的情况下如何执行脚本?在这样的环境中,可能存在某种
导入
要求