home_barlist1: function home_barlist1() { //获取中间导航 var that = this; _wxRequest2.default.post({ 'url': _api2.default.home_barlist, 'data': { show_type: 4 } }).then(function (res) { if (res.code == 100) { var homelist = res.data; that.setData({ homelist1: homelist }); } else { _tip2.default.toast(res.data); } }); },
请问上面这段代码,我想封装成Promise 这种 直接调用this.home_barlist1().then 该怎么改呢?
我改成下面这样 好像不行
home_barlist1: function home_barlist1() { //获取中间导航 return new Promise(function (resolve, reject) { var that = this; _wxRequest2.default.post({ 'url': _api2.default.home_barlist, 'data': { show_type: 4 } }).then(function (res) { if (res.code == 100) { var homelist = res.data; that.setData({ homelist1: homelist }); resolve(res); } else { _tip2.default.toast(res.data); } }); }); },
你这不本来就是一个 Promise 么?直接把箭头处 return 出去就不完了?
你的封装基本上是正确的,但是需要注意的是,当你返回一个新的Promise时,你需要确保在所有可能的执行路径上都调用resolve
或reject
。在你的代码中,如果res.code
不等于100
,你没有调用resolve
或reject
,这可能会导致Promise永远不会被解决或拒绝。
你可以通过在else语句块中调用reject
来解决这个问题。这样,如果请求失败(即res.code
不等于100
),Promise将被拒绝,并且你可以在调用this.home_barlist1()
时使用.catch()
来处理这个错误。
以下是修改后的代码:
home_barlist1: function home_barlist1() { // 获取中间导航 return new Promise(function (resolve, reject) { var that = this; _wxRequest2.default.post({ 'url': _api2.default.home_barlist, 'data': { show_type: 4 } }).then(function (res) { if (res.code == 100) { var homelist = res.data; that.setData({ homelist1: homelist }); resolve(res); } else { _tip2.default.toast(res.data); reject(new Error(res.data)); // 在这里调用reject } }); });}
现在,你可以像这样调用home_barlist1
函数并处理返回的Promise:
this.home_barlist1().then(function(res) { // 处理成功的情况}).catch(function(error) { // 处理失败的情况});
第一个问题,这个为什么先输出3后输出2呢 第二个问题,这个为什么会交错输出呢,142536 promise小白一枚,上述两个疑问,希望能得到详细的解答
请问这种 space-between 两端对齐的,最后一行 怎样靠左和上面的一样正常显示,而不是最后一个跑到最右边去了, 网上找了很多,加伪类之类的方法都不行,请问如何去做合适?
我有一个vue写的标签 其中,queryByPrimaryKey返回的是一个promise,所以这里用await等待promise的值,因为用到了await,所以外层又需要用async包裹,这样整体函数返回的又是一个promise,那么src属性实际上要的是返回的string值,而不是包裹着string的promise,我如何拿到string值?
请教一个算法问题 输入原数组(按start排序, 并且下一项的start一定>=前一项的end) 提取出连续的相同项合并成一个新的对象, 插入原数组, 根据start和end判断是否连续 如例子里的(0,1,2)项里的B 提取并合并得到{ "start": 1, "end": 4, "content": ["B"] } (2,3)项里的D 提取并合并得到{ "start": 3, "end": 5
请大佬帮忙分析一下,以下代码执行顺序(正确的顺序是:a 1 2 3 b 4 c 5):
问题背景:我现在想做一个关于文本溢出,显示展开按钮,文本如果没溢出,就不显示展开按钮 例子:如果文本超出两行,显示按钮,小于等于两行,那么就不显示按钮。 但是不知道如何判断文本是否会超出两行?