You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将app-store-scraper接口.then的返回结果赋值给变量?

解决方案

问题原因

store.app()方法返回的是Promise异步对象,你直接赋值给变量拿到的是Promise实例而非查询结果,必须等待异步执行完成后才能获取到有效数据。

基础用法:将结果存入变量

所有使用查询结果的逻辑必须放在then回调中,或在await语句之后执行:

const store = require('app-store-scraper');
let result = null;

store.app({id: 553834731})
  .then(data => {
    // 此处才能拿到有效结果存入变量
    result = data;
    console.log(result);
  })
  .catch(err => console.error('查询出错:', err));

Web服务返回结果的实现

因为res.end()仅支持传入字符串或Buffer类型,所以需要将查询到的对象结果转为JSON字符串后再返回,这里提供两种写法:

写法1:async/await(更简洁易读)

以Express框架为例:

const express = require('express');
const store = require('app-store-scraper');
const app = express();

app.get('/app-info', async (req, res) => {
  try {
    // 等待异步查询完成获取结果
    const appData = await store.app({id: 553834731});
    // 转成JSON字符串后返回
    res.end(JSON.stringify(appData));
  } catch (err) {
    res.statusCode = 500;
    res.end(JSON.stringify({
      error: '查询应用信息失败',
      message: err.message
    }));
  }
});

app.listen(3000, () => console.log('服务已启动,端口3000'));

写法2:Promise.then回调写法

app.get('/app-info', (req, res) => {
  store.app({id: 553834731})
    .then(appData => {
      res.end(JSON.stringify(appData));
    })
    .catch(err => {
      res.statusCode = 500;
      res.end(JSON.stringify({
        error: '查询应用信息失败',
        message: err.message
      }));
    });
});

注意事项

  • 不要在异步操作未完成时访问结果变量,否则会拿到undefined或Promise对象
  • 返回给前端前必须将对象类型的结果通过JSON.stringify()转为字符串格式,否则res.end()会报错

内容的提问来源于stack exchange,提问作者oredgaming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:06:04