function getPageDetails(callback,filterlink) {
var message=1+2;
callback(message,filterlink);
});
};
function test(message,filterlink)
{
var data=message+1;
return data
}
function test1(filterlink)
{
var testdata=getPageDetails(test,filterlink)
alert(testdata)
}
在这个例子中,当我使用参数调用test1(filterlist)方法并且想要调用回调函数时。我确实在testdata变量中获得了任何数据。它应该是4警报。有人可以帮忙吗?
答案 0 :(得分:0)
利用承诺,这将解决您的问题
let p1 = new Promise(
(resolve, reject) => {
log.insertAdjacentHTML('beforeend', thisPromiseCount +
') Promise started (<small>Async code started</small>)<br/>');
// This is only an example to create asynchronism
window.setTimeout(
function() {
// We fulfill the promise !
resolve(thisPromiseCount);
}, Math.random() * 2000 + 1000);
}
);
// We define what to do when the promise is resolved with the then() call,
// and what to do when the promise is rejected with the catch() call
p1.then(
// Log the fulfillment value
function(val) {
log.insertAdjacentHTML('beforeend', val +
') Promise fulfilled (<small>Async code terminated</small>)<br/>');
})
.catch(
// Log the rejection reason
(reason) => {
console.log('Handle rejected promise ('+reason+') here.');
});
完整信息:promise
答案 1 :(得分:0)
您的函数getPageDetails
并未返回任何内容。
执行callback(message, filterlink)
时,您需要返回结果,以便var testdata
获得分配值:
function getPageDetails(callback, b) {
[...]
return callback(...);
}
答案 2 :(得分:0)
如果您返回评论中建议的回调,并删除第一个功能中的function getPageDetails(callback, filterlink) {
var message = 1 + 2;
return callback(message, filterlink);
}
function test(message, filterlink) {
var data = message + filterlink;
return data
}
function test1(filterlink) {
var testdata = getPageDetails(test, filterlink)
alert(testdata)
}
test1(1);
。
我强烈建议您使用Pranay Rana的解决方案,因为它更好。如果你使用js,那么值得投资于对promises的理解!
plot()