Javascript 承诺决议

Javascript 承诺决议,javascript,web,nativescript,Javascript,Web,Nativescript,我不熟悉javascript承诺,我正在使用以下来自NativeScript的代码查询sqlite数据库,如果行存在,我只想返回true,否则返回false: function hasBookmark(url) { (new Sqlite("pakjobs.db")).then(db => { db.all("SELECT url FROM bookmarks WHERE url=?", [url]).then(rows => { re

我不熟悉javascript承诺,我正在使用以下来自NativeScript的代码查询sqlite数据库,如果行存在,我只想返回
true
,否则返回
false

function hasBookmark(url) {
    (new Sqlite("pakjobs.db")).then(db => {
        db.all("SELECT url FROM bookmarks WHERE url=?", [url]).then(rows => {
            return rows.length ? true : false;
        }, error => {
            console.log("hasBookmark ERROR", error);
            return false;
        });
    }, error => {
        console.log("hasBookmark ERROR", error);
        return false;
    });

    return false;
}
但是,函数始终返回
false

谁能告诉我,如果行存在,如何返回
true
,否则如何返回
false


感谢您的帮助

您将无法返回true或false,这就是承诺的要点,您无法在javascript中异步返回某些内容

但是,您可以直接返回您正在创建的承诺,然后调用
。然后调用它

function hasBookmark(url) {
    return (new Sqlite("pakjobs.db")).then(db => {
        return db.all("SELECT url FROM bookmarks WHERE url=?", [url]).then(rows => {
            return rows.length ? true : false;
        }, error => {
            console.log("hasBookmark ERROR", error);
            return false;
        });
    }, error => {
        console.log("hasBookmark ERROR", error);
        return false;
    });

}

const hasBookmarkPromise = hasBookmark('someurl');

hasBookmarPromise.then(value => {
    if (value === true) {
        console.log('has bookmarks');
    }
});

抱歉,是从iphone 5s尝试的,从手机进行格式化有点困难,但是是的,我已经编辑了答案。避免!我按照你说的做了,它仍然返回
false
始终:(你还需要
返回
第一个
然后
句柄的内部承诺是的,忘记了内部承诺。谢谢!可能是
function hasBookmark(url) {
    return new Promise((resolve, reject) => {
        (new Sqlite("pakjobs.db")).then(db => {
            db.all("SELECT url FROM          bookmarks WHERE url=?", [url]).then(rows => {
                resolve(rows.length ? true : false)
            }, error => {
                console.log("hasBookmark ERROR", error);
                resolve(false);
            });
        }, error => {
            console.log("hasBookmark ERROR", error);
            resolve(false);
        });
    });
}

hasBookmark(url).then(function(isValid){
   If(isValid){
     // Do something
   }
});