[英]Returning results from a JavaScript function
我剛接觸JavaScript,希望有人可以幫助我了解如何修改以下函數,以便在調用時可以正確返回結果。 該代碼當前有效,並且一旦生成會話字符串,就會調用handleResults函數。 我想做的是修改generateSessionString函數,以便它將返回會話字符串,而不是將其傳遞給handleResults。 誰能給我建議我如何做到這一點?
function generateSessionString(){
var cb = function (success, results){
if(!success)
alert(results);
if(results.code && results.message){
alert (results.message);
return;
}
handleResults(results);
};
var config = new KalturaConfiguration(gPartnerID);
config.serviceUrl = gServiceURL;
var client = new KalturaClient(config);
var partnerId = gPartnerID;
var userId = gUserName;
var password = gPassWord;
var expiry = gExpiry;
var privileges = gPrivileges;
var result = client.user.login(cb, partnerId, userId, password, expiry, privileges);
return result;
}
function handleResults(ks){
KalturaSessionString = ks;
}
如果您想以同步方式(仍然是異步代碼)編寫它,則可以嘗試promise(在此示例中,我使用jQuery)
function generateSessionString(){
var dfd = new jQuery.Deferred();
var cb = function (success, results){
if(!success)
dfd.fail(results);
if(results.code && results.message){
dfd.fail (results.message);
return;
}
dfd.resolve(results);
};
var config = new KalturaConfiguration(gPartnerID);
config.serviceUrl = gServiceURL;
var client = new KalturaClient(config);
var partnerId = gPartnerID;
var userId = gUserName;
var password = gPassWord;
var expiry = gExpiry;
var privileges = gPrivileges;
client.user.login(cb, partnerId, userId, password, expiry, privileges);
return dfd.promise();
}
$.when(generateSessionString()).then(
function(session)
{
alert(session);
}
)
@Itay Kinnrot的答案是正確的。實際上,jQuery的on / trigger是解決它的另一種方法,但是$ .Deferred更好。
如果您想了解更多信息,可以嘗試了解發布/訂閱模式。 推薦這篇文章:
http://www.elijahmanor.com/2013/03/angry-birds-of-javascript-blue-bird.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.