【发布时间】:2016-01-04 05:25:30
【问题描述】:
如何改进下面的第三个函数以同时使用基于回调的函数和基于 Promises 的函数?
第一个函数是“times 2”的标准回调实现。
function a(i, cb) {
return cb(null, i * 2);
}
let ans =
a(2,
function(error, result) {
if (error) console.log('a callback error ' + error.message);
return result;
}
);
console.log('a(2, cb)=' + ans);
到达
a(2, cb)=4
我的第二个函数将 Promises 用于“time 3”。
function ap(i) {
return new Promise(function(resolve, reject) {
return resolve(i * 3);
})
}
ap(2)
.then(function(result, error) {
if (error) console.log('error ' + error.message);
console.log('ap(2)=' + result);
});
到达
ap(2)=6
这个问题的动机是一段代码,我似乎无法让语句以正确的顺序出现。我正在尝试使用第三个函数来学习如何使带有回调的函数与带有 Promises 的函数共存。第一次尝试调用上面的回调函数,然后链接上面的 Promise 函数。
let ans;
function aap(i) {
let answer = a(i, function(error, result) {
if (error) console.log('error ' + error.message);
return result;
});
ap(answer)
.then(function(result, error) {
console.log('aap ap callback result=' + result + ' error=' + error);
if (error) console.log('error ' + error.message);
ans = result;
})
}
aap(2);
console.log('aap(2)=' + ans);
它同时到达
aap(2)=null
aap ap callback result=12 error=undefined
第一行看起来很失败。我从第二行看到,如果我能更有效地控制语句顺序,就可以获得正确的答案。怎么样?
【问题讨论】:
-
你的第三个函数有很多问题——主要是你对异步编码技术缺乏了解
-
你在拐弯抹角。请清楚说明实际问题。
-
我试图学习其他人正在使用的技术(如果有的话),以使用回调函数和使用 Promises 的函数。正确答案在我提供的示例中,但我无法控制语句执行的顺序,这阻止了我在程序中使用该答案。
-
我承认我对异步编码技术缺乏了解。一些 StackOverflow 版主似乎认为,我要求提供有关资源的建议以解释该材料是对 StackOverflow 的不当使用,因此我制定了一个示例,希望它能为我提供所需的帮助。我想按预期使用该网站;我寻求一些帮助。提前致谢。
标签: javascript callback