等待异步函数完成而不添加回调

gr3*_*3co 3 javascript asynchronous mocha.js node.js express

我正在使用Mocha和Should.js为我的Node.js/Express/Mongoose项目编写测试,我正在测试访问MongoDB的函数.我希望这些测试完全独立于我的数据库中的实际记录,所以我想创建一个条目然后加载它,并对它进行所有测试,然后删除它.我写了我的实际函数(我在整个项目完成后编写测试),这样create函数没有回调函数; 它只是在完成后呈现页面.在我的测试脚本中,我在调用load_entry之后调用了我的函数create,但有时create需要比平常更长的时间,因此load_entry当它无法实际加载文章时会抛出错误,因为它尚未创建.有没有办法确保在不使用回调的情况下完成异步函数?

如果我能提供更多信息,请告诉我.我看了整个谷歌,找不到任何真正回答我问题的东西,因为大多数解决方案只是说"使用回调!"

Eri*_*ger 5

使用所谓的a promise

你可以在这里阅读更多相关信息.

有很多很棒的库可以帮到你.

Q.js是我个人喜欢的,现在它被广泛使用.许多其他人也存在 jQuery中的承诺.

以下是使用异步json-p调用的aq promise的示例:DEMO

var time;
$.ajax({
    dataType: 'jsonp',
    type: 'GET',
    url: "http://www.timeapi.org/utc/now.json",
    success: function (data) {
        time = data;
    },
    error: function (data) {
        console.log("failed");
    }
})
.then(function(){ // use a promise library to make sure we synchronize off the jsonp
    console.log(time);    
});
Run Code Online (Sandbox Code Playgroud)