gpt4 book ai didi

javascript 将标准函数转换为 Promise

转载 作者:行者123 更新时间:2023-12-02 03:41:29 25 4
gpt4 key购买 nike

我有一个标准函数,可以成功检查是否安装了特定的应用程序。但该函数需要一些时间才能执行,我需要将其绑定(bind)到 promise.then(function (response) { ...}因为应用程序检查器执行时间太长...导致应用程序检查功能的预期响应出现异步问题。但我无法让它工作。

checkSocialApp 仅返回 true 或 false:

function checkSocialApp(objApp) {
if (device.platform == "iOS") {
var scheme = objApp.ios;
} else {
var scheme = objApp.and;
}
if (objApp.appName == "Facebook") {
return true ; // FB doesn't need app, can be logged in via browser
} else {
return appAvailability.check(
scheme,
function() { // success callback
console.log(scheme + " is Installed") ;
return true ;
}, function () { // Error callback
console.log(scheme + " is NOT Installed") ;
alert("You do not have the " +objApp.appName+ " app installed.") ;
return false ;
}
);
}

checkSocialApp(appObj).then(function(response){ // errors on 'then'
if (response == true) { // app IS installed
console.log("CheckApp True") ;
appObj.loginApp() ;
} else if (response == false) { // app IS NOT installed
console.log("CheckApp False") ;
appObj.disableApp() ;
}
}) ;

.then 上出现上述错误。所以我尝试将它绑定(bind)到一个promise.resolve:

var promise1 = Promise.resolve(checkSocialApp(appObj)) ;
promise1.then(function(response) {
if (response == true) ...

这将执行 checkSocialApp函数成功(因为我看到从该函数内打印了正确的控制台消息),但我没有得到 response回到 .then 的剩余部分进行处理。

最佳答案

你必须做这样的事情,在你的函数中返回一个 promise :

function checkSocialApp(objApp) {
return new Promise( function(resolve)={
if (device.platform == "iOS") {
var scheme = objApp.ios;
} else {
var scheme = objApp.and;
}

if (objApp.appName == "Facebook") {
resolve (true) ; // FB doesn't need app, can be logged in via browser
} else {
return appAvailability.check(
scheme,
function() { // success callback
console.log(scheme + " is Installed") ;
resolve (true) ;
}, function () { // Error callback
console.log(scheme + " is NOT Installed") ;
alert("You do not have the " +objApp.appName+ " app installed.") ;
resolve (false) ;
}
);
}
})
}


checkSocialApp(appObj).then(function(response){ // errors on 'then'
if (response == true) { // app IS installed
console.log("CheckApp True") ;
appObj.loginApp() ;
} else if (response == false) { // app IS NOT installed
console.log("CheckApp False") ;
appObj.disableApp() ;
}
}) ;

关于javascript 将标准函数转换为 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48469328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com