Javascript 你如何在承诺内回报?
我开始自学javascript,但从promise中的函数返回时遇到了困难。我的代码基本上如下所示: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
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的情况下如何执行脚本?在这样的环境中,可能存在某种导入
或要求
。