- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是第一次使用.then,而不是.then我使用回调函数。
下面是我的代码片段:
phantom.create().then(function (ph) {
ph.createPage().then(function (page) {
page.open("http://codebeautify.org/xmlvalidator").then(function (status) {
page.render(base_pdf_path + lpnumber + '.pdf').then(function () {
console.log('PDF generated for waybill');
//Insert waybill url in db.
return waybill_url.insertWaybillUrl('Lpsimer', waybillUrl).then(function (waybill_inserted_resp) {
callback(null, true);
}).catch(function (error) {
callback(err_waybill_inserted);
});
});
});
});
});
上面的函数正在调用如下函数,该函数在另一个文件中,正确调用的文件名是waybill.js:
var mongoose = require('mongoose');
var q = require('promised-io/promise');
var WaybillUrlSchema = new mongoose.Schema({
lpnumber: String,
url: String,
waybilltime: Date
});
module.exports = {
insertWaybillUrl: function (lpnumber, url) {
var defer = q.defer();
var waybill_insert = new waybill_url({
lpnumber: lpnumber,
url: url,
waybilltime: new Date()
});
//Save model to MongoDB
waybill_insert.save(function (err, inserted_waybill) {
if (err) {
return defer.reject(err);
}
else {
return defer.resolve(inserted_waybill);
}
});
}
};
之前我使用此模式进行回调,并且运行良好:
waybill_url.insertWaybillUrl('Lpsimer', waybillUrl, function(err, success) {
if (err) {
} else {
}
)}
现在我必须使用.then,因为使用幻像代码来编写PDF,这使得工作变得很麻烦。
需要有关如何在回调中进行回调的建议。
更新
phantom.create().then(function (ph) {
ph.createPage().then(function (page) {
page.open("http://codebeautify.org/xmlvalidator").then(function (status) {
page.render(base_pdf_path + lpnumber + '.pdf').then(function () {
//Insert waybill url in db.
waybill_url.insertWaybillUrl('Lpsimer', waybillUrl).then(function (waybill_inserted_resp) {
if (waybill_inserted_resp) {
callback(null, true);
}
}).catch(function (error_waybill_url_insert) {
console.log("Error in inserting waybill:" + err_waybill_inserted);
callback(error_waybill_url_insert);
});
}).catch(function (error_render) {
console.log("error_render");
callback(error_render);
});
}).catch(function (error_open) {
callback(error_open);
});
}).catch(function (error_create_page) {
callback(error_create_page);
});
}).catch(function (error_phantom_create) {
callback(error_phantom_create);
});
现在我已经按照 rsp 在他的回答中的建议为每个 then 添加了 catch,但现在我收到了错误,我已捕获该错误并将其发送到另一个回调:
Cannot read property 'then' of undefined
我在添加 console.log("error_render"); 时收到此错误这就是我调用 phantom 的 page.render 函数的地方。
我的要求很简单。我想使用 phantom 生成一个 PDF 文件,然后我只想调用另一个文件 waybill_url 中的另一个函数,函数名称:waybill_url.insertWaybillUrl。但由于回调和异步行为,这种简单的两个函数调用变得很麻烦。
最佳答案
确保您使用 catch()
而不仅仅是 then()
- 或 then()
的两个参数。否则,您将不会处理错误,并且您将收到该警告 - 在 Node 的下一个版本中,这将是一个错误,而不是警告。
有关详细信息,请参阅此答案:
关于node.js - ( Node :2684) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'then' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42395021/
我正在使用 Test Cafe 中使用 Resemble.JS 库的函数来比较实际屏幕截图和基本屏幕截图。在我的夹具中,我有两个测试,由于屏幕截图不匹配,两个测试都应该在报告中失败,但唯一的第一个测试
这个问题在这里已经有了答案: What does IndexOutofRangeException mean? (3 个答案) 关闭 9 年前。 string Query = "SELECT [AA
错误日志: System.TypeInitializationException was unhandled Message="The type initializer for 'MaxDavid
使用 Python 2.7 和 Django 1.10.4,我尝试将我的应用程序部署到 pythonanywhere,但我不断收到此错误。 错误日志 wsgi.py import os import
我有一个名为 Form1 的表单: 有一个 ComboBox 和一个 TextBox,当我从 ComboBox 中选择 US$ 时,它必须从数据库中检索数据并显示TextBox 中的 150。 这是我
我正在尝试制作 slider 益智游戏,但在我的 form1 中调用 myBoard.paint(e.Graphics) 时,我不断收到错误“NullReferenceException 未处理”。请
我目前正在开发一个数据库,用于跟踪停在 parking 场的车辆。但是,我在将新记录保存到数据库表时遇到了一些问题。现在我对编程还很陌生,所以我无法理解我收到的错误。我试过查找它并发现了类似的情况,但
我编写了一个 Android 应用程序 (4.4.2),它在大多数时间都能正确连接/断开 BLE 外围设备。但是,每隔一段时间我就会在 Bluetootgatt.java onClientConnec
当我尝试运行 Facebook C# SDK 附带的 WP7 示例应用程序时,我收到此异常: File or assembly name 'Microsoft.Contracts, Version=1
我正在尝试学习如何在 Scala 中使用 Try with 进行理解。 在下面的示例代码中( result1 ), 如果 for comprehension 中的最后一条语句抛出未处理的异常, 代码不
我遇到了一个小问题,在调试了所有应用程序后,我注意到这是导致问题的文件,并向我返回了 UnhandledPromiseRejection 'use strict' const connection =
我对 Java(特别是 Android)相当陌生。我试图让用户从图库中选择图像,然后应用程序会将图像从图库复制到应用程序目录中的文件夹(以及显示他们在图像按钮中选择的图片)。但是,我收到“未处理的异常
我已从 iOS SDK 4.2 升级到 iOS SDK 5.0。当我现在尝试编译当前项目时,出现以下错误。 关于这里出了什么问题的任何想法?我已经阅读了所有我能找到的“mtouch failed wi
由于我正在考虑使用 WCF,所以我认为最好只是按照一个简单的教程来尝试一下。 3 小时后,我只有一个异常(exception)要显示。它不会消失。 我排除了没有加载 app.config 的可能性。如
我正在尝试在带有 .net 4.5 的 VS 2012 中使用带有 Telerik OpenAccess 的 WCF Plain 服务。 我尝试了 telerik 开发人员手册并创建了服务和客户端。
我遇到了这个错误 Program.exe 中 0x0049b946 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000090。 错误指向这一行: // thread
对于我的 Monodroid 应用程序,我想在出现未处理的异常后执行以下操作: 将错误发送到服务器。 通知用户应用程序已崩溃(可能使用 toast 消息)。 优雅地退出应用程序。 我已经实现了#1,但
我使用 JQuery 的表排序器对表进行排序,但我遇到了空表抛出异常的问题。所以我在脚本中添加了一个条件,但现在问题出在条件上。 : $(document).ready(function ($) {
我的构造函数的目标是: 打开一个文件读入特定字符串(“%%%%%”)之间存在的所有内容将每个读取行放在一个变量(历史记录)中将最终变量添加到 char 类型的双指针 (_stories)关闭文件。 但
我正在使用 Visual Studio 2005 和 IIS 6.0.. 我在事件日志中有这个警告。我试图找到它是什么。我工作时从未经历过这个异常(exception)。可以做什么,在哪里可以做,不再
我是一名优秀的程序员,十分优秀!